Package org.aspectj.apache.bcel.generic
Klasse InstructionBranch
java.lang.Object
org.aspectj.apache.bcel.generic.Instruction
org.aspectj.apache.bcel.generic.InstructionBranch
- Alle implementierten Schnittstellen:
Serializable
,Cloneable
,Constants
,InstructionTargeter
- Bekannte direkte Unterklassen:
InstructionSelect
Abstract super class for branching instructions like GOTO, IFEQ, etc.. Branch instructions may have a variable length, namely
GOTO, JSR, LOOKUPSWITCH and TABLESWITCH. A branch instruction may be talking in terms of absolute destination (targetIndex) or
about an instruction it doesnt yet know the position if (targetInstruction). targetInstruction (if set) overrides targetIndex
- Version:
- $Id: InstructionBranch.java,v 1.6 2009/10/05 17:35:36 aclement Exp $
- Autor:
- M. Dahm
- Siehe auch:
-
Feldübersicht
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, 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, 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
KonstruktorBeschreibungInstructionBranch
(short opcode) InstructionBranch
(short opcode, int index) InstructionBranch
(short opcode, InstructionHandle target) -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungboolean
void
dump
(DataOutputStream 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.final int
getIndex()
protected int
getType
(ConstantPool cp) int
hashCode()
boolean
Returns an InstructionHandle to the physical successor of this JsrInstruction.void
setTarget
(InstructionHandle target) Set branch targettoString
(boolean verbose) Long output format:protected int
updatePosition
(int offset, int max_offset) Called by InstructionList.setPositions when setting the position for every instruction.void
updateTarget
(InstructionHandle oldHandle, InstructionHandle newHandle) Update the target destination for this instruction.Von Klasse geerbte Methoden org.aspectj.apache.bcel.generic.Instruction
consumeStack, copy, getLength, getLoadClassType, getName, getOpcode, getType, getValue, getValue, isALOAD, isArrayCreationInstruction, isASTORE, isConstantInstruction, isConstantPoolInstruction, isIndexedInstruction, isJsrInstruction, isLoadInstruction, isLocalVariableInstruction, isReturnInstruction, isStackConsumer, isStackProducer, isStoreInstruction, produceStack, readInstruction, setIndex, toString
-
Felddetails
-
targetIndex
protected int targetIndex -
targetInstruction
-
positionOfThisInstruction
protected int positionOfThisInstruction
-
-
Konstruktordetails
-
InstructionBranch
-
InstructionBranch
public InstructionBranch(short opcode, int index) -
InstructionBranch
public InstructionBranch(short opcode)
-
-
Methodendetails
-
dump
- Setzt außer Kraft:
dump
in KlasseInstruction
- Löst aus:
IOException
-
getTargetOffset
protected int getTargetOffset() -
updatePosition
protected int updatePosition(int offset, int max_offset) 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.- 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
-
toString
Long output format:- Setzt außer Kraft:
toString
in KlasseInstruction
- Parameter:
verbose
- long/short format switch- Gibt zurück:
- mnemonic for instruction
-
getIndex
public final int getIndex()- Setzt außer Kraft:
getIndex
in KlasseInstruction
- Gibt zurück:
- target offset in byte code
-
getTarget
- Gibt zurück:
- target of branch instruction
-
setTarget
Set branch target- Parameter:
target
- branch target
-
updateTarget
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
- Parameter:
oldHandle
- old targetnewHandle
- new target
-
containsTarget
- Angegeben von:
containsTarget
in SchnittstelleInstructionTargeter
- Gibt zurück:
- true, if ih is target of this instruction
-
getType
- Setzt außer Kraft:
getType
in KlasseInstruction
-
physicalSuccessor
Returns an InstructionHandle to the physical successor of this JsrInstruction. For this method to work, this JsrInstruction object must not be shared between multiple InstructionHandle objects! Formally, there must not be InstructionHandle objects i, j where i != j and i.getInstruction() == this == j.getInstruction().- Gibt zurück:
- an InstructionHandle to the "next" instruction that will be executed when RETurned from a subroutine.
-
isIfInstruction
public boolean isIfInstruction() -
equals
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 KlasseInstruction
-
hashCode
public int hashCode()- Setzt außer Kraft:
hashCode
in KlasseInstruction
-