Package javassist.bytecode.analysis
Class Executor
- java.lang.Object
-
- javassist.bytecode.analysis.Executor
-
-
Field Summary
Fields Modifier and Type Field Description private TypeCLASS_TYPEprivate ClassPoolclassPoolprivate ConstPoolconstPoolprivate intlastPosprivate TypeSTRING_TYPEprivate TypeTHROWABLE_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 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 voidevalLDC(int index, Frame frame)private 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 voidevalShift(Type expected, Frame frame)private 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 TypegetType(java.lang.String name)private Type[]paramTypesFromDesc(java.lang.String desc)private TyperesolveClassInfo(java.lang.String info)private TypereturnTypeFromDesc(java.lang.String desc)private TypesimplePeek(Frame frame)private TypesimplePop(Frame frame)private voidsimplePush(Type type, Frame frame)private voidsimpleSetLocal(int index, Type type, Frame frame)private TypetypeFromDesc(java.lang.String desc)private voidverifyAssignable(Type expected, Type type)private TypezeroExtend(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
-
-