| 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
BadBytecodeprivate void evalArrayStore(Type expectedComponent, Frame frame) throws BadBytecode
BadBytecodeprivate void evalBinaryMath(Type expected, Frame frame) throws BadBytecode
BadBytecodeprivate void evalGetField(int opcode,
int index,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalInvokeIntfMethod(int opcode,
int index,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalInvokeMethod(int opcode,
int index,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalInvokeDynamic(int opcode,
int index,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalLDC(int index,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalLoad(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode
BadBytecodeprivate void evalNewArray(int pos,
CodeIterator iter,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalNewObjectArray(int pos,
CodeIterator iter,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalPutField(int opcode,
int index,
Frame frame)
throws BadBytecode
BadBytecodeprivate void evalShift(Type expected, Frame frame) throws BadBytecode
BadBytecodeprivate void evalStore(Type expected, int index, Frame frame, Subroutine subroutine) throws BadBytecode
BadBytecodeprivate void evalWide(int pos,
CodeIterator iter,
Frame frame,
Subroutine subroutine)
throws BadBytecode
BadBytecodeprivate Type getType(java.lang.String name) throws BadBytecode
BadBytecodeprivate Type[] paramTypesFromDesc(java.lang.String desc) throws BadBytecode
BadBytecodeprivate Type returnTypeFromDesc(java.lang.String desc) throws BadBytecode
BadBytecodeprivate void access(int index,
Type type,
Subroutine subroutine)
private Type resolveClassInfo(java.lang.String info) throws BadBytecode
BadBytecodeprivate Type typeFromDesc(java.lang.String desc) throws BadBytecode
BadBytecodeprivate void verifyAssignable(Type expected, Type type) throws BadBytecode
BadBytecode