Package org.aspectj.apache.bcel.generic
Klasse InstructionSelect
java.lang.Object
org.aspectj.apache.bcel.generic.Instruction
org.aspectj.apache.bcel.generic.InstructionBranch
org.aspectj.apache.bcel.generic.InstructionSelect
- Alle implementierten Schnittstellen:
Serializable
,Cloneable
,Constants
,InstructionTargeter
- Bekannte direkte Unterklassen:
LOOKUPSWITCH
,TABLESWITCH
Select - Abstract super class for LOOKUPSWITCH and TABLESWITCH instructions.
- Version:
- $Id: InstructionSelect.java,v 1.4 2009/10/05 17:35:36 aclement Exp $
- Autor:
- M. Dahm
- Siehe auch:
-
Feldübersicht
Modifizierer und TypFeldBeschreibungprotected int
protected int[]
protected short
protected int[]
protected int
protected int
protected InstructionHandle[]
Von Klasse geerbte Felder org.aspectj.apache.bcel.generic.InstructionBranch
positionOfThisInstruction, targetIndex, targetInstruction
Von Klasse geerbte Felder org.aspectj.apache.bcel.generic.Instruction
opcode
Von Schnittstelle geerbte Felder org.aspectj.apache.bcel.Constants
_unused, AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MODULE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_ANNOTATION_DEFAULT, ATTR_BOOTSTRAPMETHODS, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_ENCLOSING_METHOD, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_LOCAL_VARIABLE_TYPE_TABLE, ATTR_METHOD_PARAMETERS, ATTR_MODULE, ATTR_MODULE_MAIN_CLASS, ATTR_MODULE_PACKAGES, ATTR_NEST_HOST, ATTR_NEST_MEMBERS, ATTR_PMG, ATTR_RUNTIME_INVISIBLE_ANNOTATIONS, ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIME_INVISIBLE_TYPE_ANNOTATIONS, ATTR_RUNTIME_VISIBLE_ANNOTATIONS, ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATTR_RUNTIME_VISIBLE_TYPE_ANNOTATIONS, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BRANCH_INSTRUCTION, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Dynamic, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_INST, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_Methodref, CONSTANT_MethodType, CONSTANT_Module, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_Package, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, CP_INST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, EXCEPTION_THROWER, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IF_INST, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, iLen, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INDEXED, INEG, INSTANCEOF, INSTANCEOF_QUICK, instExcs, instFlags, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_INSTRUCTION, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOAD_INST, LOADCLASS_INST, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LV_INST, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAJOR_1_4, MAJOR_1_5, MAJOR_1_6, MAJOR_1_7, MAJOR_1_8, MAJOR_1_9, MAJOR_10, MAJOR_11, MAJOR_12, MAJOR_13, MAJOR_14, MAJOR_15, MAJOR_16, MAJOR_17, MAJOR_18, MAJOR_19, MAJOR_20, MAJOR_21, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MINOR_1_4, MINOR_1_5, MINOR_1_6, MINOR_1_7, MINOR_1_8, MINOR_1_9, MINOR_10, MINOR_11, MINOR_12, MINOR_13, MINOR_14, MINOR_15, MINOR_16, MINOR_17, MINOR_18, MINOR_19, MINOR_20, MINOR_21, MODULE_ACC_MANDATED, MODULE_ACC_STATIC_PHASE, MODULE_ACC_SYNTHETIC, MODULE_ACC_TRANSITIVE, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEGATABLE, NEW, NEW_QUICK, NEWARRAY, NOP, OPCODE_NAMES, POP, POP_INST, POP2, PREVIEW_MINOR_VERSION, PUSH, PUSH_INST, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RET_INST, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STACK_INST, stackEntriesProduced, STATIC_INITIALIZER_NAME, STORE_INST, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TARGETER_INSTRUCTION, TYPE_NAMES, TYPE_OF_OPERANDS, types, UNDEFINED, UNDEFINED_LENGTH, UNPREDICTABLE, VARIABLE_LENGTH, WIDE
-
Konstruktorübersicht
-
Methodenübersicht
Modifizierer und TypMethodeBeschreibungboolean
void
dump
(DataOutputStream out) Dump instruction as byte code to stream out.boolean
Only equal if they are the same branch instruction - otherwise too risky as the targets may only temporarily be pointing at the same destination.int[]
int
int[]
protected int
getTargetOffset
(InstructionHandle target) int
hashCode()
void
setTarget
(int i, InstructionHandle target) Set branch target for `i'th casetoString
(boolean verbose) Long output format:protected int
updatePosition
(int offset, int max_offset) Since this is a variable length instruction, it may shift the following instructions which then need to update their position.void
updateTarget
(InstructionHandle old_ih, InstructionHandle new_ih) Update the target destination for this instruction.Von Klasse geerbte Methoden org.aspectj.apache.bcel.generic.InstructionBranch
getIndex, getTarget, getTargetOffset, getType, isIfInstruction, physicalSuccessor, setTarget
Von Klasse geerbte Methoden org.aspectj.apache.bcel.generic.Instruction
consumeStack, copy, getLoadClassType, getName, getOpcode, getType, getValue, getValue, isALOAD, isArrayCreationInstruction, isASTORE, isConstantInstruction, isConstantPoolInstruction, isIndexedInstruction, isJsrInstruction, isLoadInstruction, isLocalVariableInstruction, isReturnInstruction, isStackConsumer, isStackProducer, isStoreInstruction, produceStack, readInstruction, setIndex, toString
-
Felddetails
-
match
protected int[] match -
indices
protected int[] indices -
targets
-
fixedLength
protected int fixedLength -
matchLength
protected int matchLength -
padding
protected int padding -
length
protected short length
-
-
Konstruktordetails
-
InstructionSelect
- Löst aus:
IOException
-
-
Methodendetails
-
getTargetOffset
-
updatePosition
protected int updatePosition(int offset, int max_offset) Since this is a variable length instruction, it may shift the following instructions which then need to update their position. Called by InstructionList.setPositions when setting the position for every instruction. In the presence of variable length instructions `setPositions' performs multiple passes over the instruction list to calculate the correct (byte) positions and offsets by calling this function.- Setzt außer Kraft:
updatePosition
in KlasseInstructionBranch
- Parameter:
offset
- additional offset caused by preceding (variable length) instructionsmax_offset
- the maximum offset that may be caused by these instructions- Gibt zurück:
- additional offset caused by possible change of this instruction's length
-
dump
Dump instruction as byte code to stream out.- Setzt außer Kraft:
dump
in KlasseInstructionBranch
- Parameter:
out
- Output stream- Löst aus:
IOException
-
toString
Beschreibung aus Klasse kopiert:InstructionBranch
Long output format:- Setzt außer Kraft:
toString
in KlasseInstructionBranch
- Parameter:
verbose
- long/short format switch- Gibt zurück:
- mnemonic for instruction
-
setTarget
Set branch target for `i'th case -
updateTarget
Beschreibung aus Klasse kopiert:InstructionBranch
Update the target destination for this instruction. If an oldHandle is provided it is checked to verify that is where the target currently points to before changing it.- Angegeben von:
updateTarget
in SchnittstelleInstructionTargeter
- Setzt außer Kraft:
updateTarget
in KlasseInstructionBranch
- Parameter:
old_ih
- old targetnew_ih
- new target
-
containsTarget
- Angegeben von:
containsTarget
in SchnittstelleInstructionTargeter
- Setzt außer Kraft:
containsTarget
in KlasseInstructionBranch
- Gibt zurück:
- true, if ih is target of this instruction
-
getMatchs
public int[] getMatchs()- Gibt zurück:
- array of match indices
-
getIndices
public int[] getIndices()- Gibt zurück:
- array of match target offsets
-
equals
Beschreibung aus Klasse kopiert:InstructionBranch
Only equal if they are the same branch instruction - otherwise too risky as the targets may only temporarily be pointing at the same destination.- Setzt außer Kraft:
equals
in KlasseInstructionBranch
-
hashCode
public int hashCode()- Setzt außer Kraft:
hashCode
in KlasseInstructionBranch
-
getTargets
- Gibt zurück:
- array of match targets
-
getLength
public int getLength()- Setzt außer Kraft:
getLength
in KlasseInstruction
-