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 Type
private final ClassPool
private final ConstPool
private int
private final Type
private final Type
Fields 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 void
access
(int index, Type type, Subroutine subroutine) private void
evalArrayLoad
(Type expectedComponent, Frame frame) private void
evalArrayStore
(Type expectedComponent, Frame frame) private void
evalBinaryMath
(Type expected, Frame frame) private void
evalGetField
(int opcode, int index, Frame frame) private void
evalInvokeDynamic
(int opcode, int index, Frame frame) private void
evalInvokeIntfMethod
(int opcode, int index, Frame frame) private void
evalInvokeMethod
(int opcode, int index, Frame frame) private void
private void
evalLoad
(Type expected, int index, Frame frame, Subroutine subroutine) private void
evalNewArray
(int pos, CodeIterator iter, Frame frame) private void
evalNewObjectArray
(int pos, CodeIterator iter, Frame frame) private void
evalPutField
(int opcode, int index, Frame frame) private void
private void
evalStore
(Type expected, int index, Frame frame, Subroutine subroutine) private void
evalWide
(int pos, CodeIterator iter, Frame frame, Subroutine subroutine) void
execute
(MethodInfo method, int pos, CodeIterator iter, Frame frame, Subroutine subroutine) Execute the instruction, modeling the effects on the specified frame and subroutine.private Type
private Type[]
paramTypesFromDesc
(String desc) private Type
resolveClassInfo
(String info) private Type
returnTypeFromDesc
(String desc) private Type
simplePeek
(Frame frame) private Type
private void
simplePush
(Type type, Frame frame) private void
simpleSetLocal
(int index, Type type, Frame frame) private Type
typeFromDesc
(String desc) private void
verifyAssignable
(Type expected, Type type) private Type
zeroExtend
(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
-