Modifier and Type | Field and Description |
---|---|
private Type |
CLASS_TYPE |
private ClassPool |
classPool |
private ConstPool |
constPool |
private int |
lastPos |
private Type |
STRING_TYPE |
private Type |
THROWABLE_TYPE |
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 and Description |
---|
Executor(ClassPool classPool,
ConstPool constPool) |
Modifier and Type | Method and 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) |
private final ConstPool constPool
private final ClassPool classPool
private final Type STRING_TYPE
private final Type CLASS_TYPE
private final Type THROWABLE_TYPE
private int lastPos
public void execute(MethodInfo method, int pos, CodeIterator iter, Frame frame, Subroutine subroutine) throws BadBytecode
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.BadBytecode
- if the bytecode violates the jvm specprivate void evalArrayLoad(Type expectedComponent, Frame frame) throws BadBytecode
BadBytecode
private void evalArrayStore(Type expectedComponent, Frame frame) throws BadBytecode
BadBytecode
private void evalBinaryMath(Type expected, Frame frame) throws BadBytecode
BadBytecode
private void evalGetField(int opcode, int index, Frame frame) throws BadBytecode
BadBytecode
private void evalInvokeIntfMethod(int opcode, int index, Frame frame) throws BadBytecode
BadBytecode
private void evalInvokeMethod(int opcode, int index, Frame frame) throws BadBytecode
BadBytecode
private void evalInvokeDynamic(int opcode, int index, Frame frame) throws BadBytecode
BadBytecode
private void evalLDC(int index, Frame frame) throws BadBytecode
BadBytecode
private void evalLoad(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode
BadBytecode
private void evalNewArray(int pos, CodeIterator iter, Frame frame) throws BadBytecode
BadBytecode
private void evalNewObjectArray(int pos, CodeIterator iter, Frame frame) throws BadBytecode
BadBytecode
private void evalPutField(int opcode, int index, Frame frame) throws BadBytecode
BadBytecode
private void evalShift(Type expected, Frame frame) throws BadBytecode
BadBytecode
private void evalStore(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode
BadBytecode
private void evalWide(int pos, CodeIterator iter, Frame frame, Subroutine subroutine) throws BadBytecode
BadBytecode
private Type getType(java.lang.String name) throws BadBytecode
BadBytecode
private Type[] paramTypesFromDesc(java.lang.String desc) throws BadBytecode
BadBytecode
private Type returnTypeFromDesc(java.lang.String desc) throws BadBytecode
BadBytecode
private void access(int index, Type type, Subroutine subroutine)
private Type resolveClassInfo(java.lang.String info) throws BadBytecode
BadBytecode
private Type typeFromDesc(java.lang.String desc) throws BadBytecode
BadBytecode
private void verifyAssignable(Type expected, Type type) throws BadBytecode
BadBytecode