Package javassist.bytecode.analysis
Class Executor
- java.lang.Object
-
- javassist.bytecode.analysis.Executor
-
-
Field Summary
Fields Modifier and Type Field Description private Type
CLASS_TYPE
private ClassPool
classPool
private ConstPool
constPool
private int
lastPos
private Type
STRING_TYPE
private Type
THROWABLE_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
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private 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
evalLDC(int index, Frame frame)
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
evalShift(Type expected, Frame frame)
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
getType(java.lang.String name)
private Type[]
paramTypesFromDesc(java.lang.String desc)
private Type
resolveClassInfo(java.lang.String info)
private Type
returnTypeFromDesc(java.lang.String desc)
private Type
simplePeek(Frame frame)
private Type
simplePop(Frame frame)
private void
simplePush(Type type, Frame frame)
private void
simpleSetLocal(int index, Type type, Frame frame)
private Type
typeFromDesc(java.lang.String desc)
private void
verifyAssignable(Type expected, Type type)
private Type
zeroExtend(Type type)
-
-
-
Method Detail
-
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
-
evalArrayLoad
private void evalArrayLoad(Type expectedComponent, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalArrayStore
private void evalArrayStore(Type expectedComponent, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalBinaryMath
private void evalBinaryMath(Type expected, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalGetField
private void evalGetField(int opcode, int index, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalInvokeIntfMethod
private void evalInvokeIntfMethod(int opcode, int index, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalInvokeMethod
private void evalInvokeMethod(int opcode, int index, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalInvokeDynamic
private void evalInvokeDynamic(int opcode, int index, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalLDC
private void evalLDC(int index, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalLoad
private void evalLoad(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode
- Throws:
BadBytecode
-
evalNewArray
private void evalNewArray(int pos, CodeIterator iter, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalNewObjectArray
private void evalNewObjectArray(int pos, CodeIterator iter, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalPutField
private void evalPutField(int opcode, int index, Frame frame) throws BadBytecode
- Throws:
BadBytecode
-
evalShift
private void evalShift(Type expected, Frame frame) throws BadBytecode
- 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
private Type getType(java.lang.String name) throws BadBytecode
- Throws:
BadBytecode
-
paramTypesFromDesc
private Type[] paramTypesFromDesc(java.lang.String desc) throws BadBytecode
- Throws:
BadBytecode
-
returnTypeFromDesc
private Type returnTypeFromDesc(java.lang.String desc) throws BadBytecode
- Throws:
BadBytecode
-
access
private void access(int index, Type type, Subroutine subroutine)
-
resolveClassInfo
private Type resolveClassInfo(java.lang.String info) throws BadBytecode
- Throws:
BadBytecode
-
typeFromDesc
private Type typeFromDesc(java.lang.String desc) throws BadBytecode
- Throws:
BadBytecode
-
verifyAssignable
private void verifyAssignable(Type expected, Type type) throws BadBytecode
- Throws:
BadBytecode
-
-