Package javassist.bytecode.analysis
Class Executor
java.lang.Object
javassist.bytecode.analysis.Executor
- All Implemented Interfaces:
Opcode
Executor is responsible for modeling the effects of a JVM instruction on a frame.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Typeprivate final ClassPoolprivate final ConstPoolprivate intprivate final Typeprivate final TypeFields inherited from interface javassist.bytecode.Opcode
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, 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, 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, GETSTATIC, 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, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaccess(int index, Type type, Subroutine subroutine) private voidevalArrayLoad(Type expectedComponent, Frame frame) private voidevalArrayStore(Type expectedComponent, Frame frame) private voidevalBinaryMath(Type expected, Frame frame) private voidevalGetField(int opcode, int index, Frame frame) private voidevalInvokeDynamic(int opcode, int index, Frame frame) private voidevalInvokeIntfMethod(int opcode, int index, Frame frame) private voidevalInvokeMethod(int opcode, int index, Frame frame) private voidprivate voidevalLoad(Type expected, int index, Frame frame, Subroutine subroutine) private voidevalNewArray(int pos, CodeIterator iter, Frame frame) private voidevalNewObjectArray(int pos, CodeIterator iter, Frame frame) private voidevalPutField(int opcode, int index, Frame frame) private voidprivate voidevalStore(Type expected, int index, Frame frame, Subroutine subroutine) private voidevalWide(int pos, CodeIterator iter, Frame frame, Subroutine subroutine) voidexecute(MethodInfo method, int pos, CodeIterator iter, Frame frame, Subroutine subroutine) Execute the instruction, modeling the effects on the specified frame and subroutine.private Typeprivate Type[]paramTypesFromDesc(String desc) private TyperesolveClassInfo(String info) private TypereturnTypeFromDesc(String desc) private TypesimplePeek(Frame frame) private Typeprivate voidsimplePush(Type type, Frame frame) private voidsimpleSetLocal(int index, Type type, Frame frame) private TypetypeFromDesc(String desc) private voidverifyAssignable(Type expected, Type type) private TypezeroExtend(Type type)
-
Field Details
-
constPool
-
classPool
-
STRING_TYPE
-
CLASS_TYPE
-
THROWABLE_TYPE
-
lastPos
private int lastPos
-
-
Constructor Details
-
Executor
-
-
Method Details
-
execute
public void execute(MethodInfo method, int pos, CodeIterator iter, Frame frame, Subroutine subroutine) throws BadBytecode Execute the instruction, modeling the effects on the specified frame and subroutine. If a subroutine is passed, the access flags will be modified if this instruction accesses the local variable table.- Parameters:
method- the method containing the instructionpos- the position of the instruction in the methoditer- the code iterator used to find the instructionframe- the frame to modify to represent the result of the instructionsubroutine- the optional subroutine this instruction belongs to.- Throws:
BadBytecode- if the bytecode violates the jvm spec
-
zeroExtend
-
evalArrayLoad
- Throws:
BadBytecode
-
evalArrayStore
- Throws:
BadBytecode
-
evalBinaryMath
- Throws:
BadBytecode
-
evalGetField
- Throws:
BadBytecode
-
evalInvokeIntfMethod
- Throws:
BadBytecode
-
evalInvokeMethod
- Throws:
BadBytecode
-
evalInvokeDynamic
- Throws:
BadBytecode
-
evalLDC
- Throws:
BadBytecode
-
evalLoad
private void evalLoad(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode - Throws:
BadBytecode
-
evalNewArray
- Throws:
BadBytecode
-
evalNewObjectArray
- Throws:
BadBytecode
-
evalPutField
- Throws:
BadBytecode
-
evalShift
- Throws:
BadBytecode
-
evalStore
private void evalStore(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode - Throws:
BadBytecode
-
evalWide
private void evalWide(int pos, CodeIterator iter, Frame frame, Subroutine subroutine) throws BadBytecode - Throws:
BadBytecode
-
getType
- Throws:
BadBytecode
-
paramTypesFromDesc
- Throws:
BadBytecode
-
returnTypeFromDesc
- Throws:
BadBytecode
-
simplePeek
-
simplePop
-
simplePush
-
access
-
simpleSetLocal
-
resolveClassInfo
- Throws:
BadBytecode
-
typeFromDesc
- Throws:
BadBytecode
-
verifyAssignable
- Throws:
BadBytecode
-