joeq.Compiler.BytecodeAnalysis
Class BytecodeVisitor
java.lang.Object
joeq.Compiler.BytecodeAnalysis.BytecodeVisitor
- All Implemented Interfaces:
- jq_ClassFileConstants, CompilationConstants
- Direct Known Subclasses:
- BytecodeToQuad, ControlFlowGraph.InitialPass, LiveRefAnalysis.FirstPassVisitor, LiveRefAnalysis.SecondPassVisitor, ModRefAnalysis, StackDepthVisitor
public class BytecodeVisitor
- extends Object
- implements jq_ClassFileConstants, CompilationConstants
| Fields inherited from interface joeq.Class.jq_ClassFileConstants |
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_Class, CONSTANT_Double, CONSTANT_FieldRef, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodRef, CONSTANT_Long, CONSTANT_MethodRef, CONSTANT_NameAndType, CONSTANT_ResolvedClass, CONSTANT_ResolvedIFieldRef, CONSTANT_ResolvedIMethodRef, CONSTANT_ResolvedSFieldRef, CONSTANT_ResolvedSMethodRef, CONSTANT_String, CONSTANT_Utf8, CONSUME_STACK, ILLEGAL_OPCODE, ILLEGAL_TYPE, jbc_AALOAD, jbc_AASTORE, jbc_ACONST_NULL, jbc_ALOAD, jbc_ALOAD_0, jbc_ALOAD_1, jbc_ALOAD_2, jbc_ALOAD_3, jbc_ANEWARRAY, jbc_ARETURN, jbc_ARRAYLENGTH, jbc_ASTORE, jbc_ASTORE_0, jbc_ASTORE_1, jbc_ASTORE_2, jbc_ASTORE_3, jbc_ATHROW, jbc_BALOAD, jbc_BASTORE, jbc_BIPUSH, jbc_BREAKPOINT, jbc_CALOAD, jbc_CASTORE, jbc_CHECKCAST, jbc_D2F, jbc_D2I, jbc_D2L, jbc_DADD, jbc_DALOAD, jbc_DASTORE, jbc_DCMPG, jbc_DCMPL, jbc_DCONST_0, jbc_DCONST_1, jbc_DDIV, jbc_DLOAD, jbc_DLOAD_0, jbc_DLOAD_1, jbc_DLOAD_2, jbc_DLOAD_3, jbc_DMUL, jbc_DNEG, jbc_DREM, jbc_DRETURN, jbc_DSTORE, jbc_DSTORE_0, jbc_DSTORE_1, jbc_DSTORE_2, jbc_DSTORE_3, jbc_DSUB, jbc_DUP, jbc_DUP_X1, jbc_DUP_X2, jbc_DUP2, jbc_DUP2_X1, jbc_DUP2_X2, jbc_F2D, jbc_F2I, jbc_F2L, jbc_FADD, jbc_FALOAD, jbc_FASTORE, jbc_FCMPG, jbc_FCMPL, jbc_FCONST_0, jbc_FCONST_1, jbc_FCONST_2, jbc_FDIV, jbc_FLOAD, jbc_FLOAD_0, jbc_FLOAD_1, jbc_FLOAD_2, jbc_FLOAD_3, jbc_FMUL, jbc_FNEG, jbc_FREM, jbc_FRETURN, jbc_FSTORE, jbc_FSTORE_0, jbc_FSTORE_1, jbc_FSTORE_2, jbc_FSTORE_3, jbc_FSUB, jbc_GETFIELD, jbc_GETSTATIC, jbc_GOTO, jbc_GOTO_W, jbc_I2B, jbc_I2C, jbc_I2D, jbc_I2F, jbc_I2L, jbc_I2S, jbc_IADD, jbc_IALOAD, jbc_IAND, jbc_IASTORE, jbc_ICONST_0, jbc_ICONST_1, jbc_ICONST_2, jbc_ICONST_3, jbc_ICONST_4, jbc_ICONST_5, jbc_ICONST_M1, jbc_IDIV, jbc_IF_ACMPEQ, jbc_IF_ACMPNE, jbc_IF_ICMPEQ, jbc_IF_ICMPGE, jbc_IF_ICMPGT, jbc_IF_ICMPLE, jbc_IF_ICMPLT, jbc_IF_ICMPNE, jbc_IFEQ, jbc_IFGE, jbc_IFGT, jbc_IFLE, jbc_IFLT, jbc_IFNE, jbc_IFNONNULL, jbc_IFNULL, jbc_IINC, jbc_ILOAD, jbc_ILOAD_0, jbc_ILOAD_1, jbc_ILOAD_2, jbc_ILOAD_3, jbc_IMUL, jbc_INEG, jbc_INSTANCEOF, jbc_INT2BYTE, jbc_INT2CHAR, jbc_INT2SHORT, jbc_INVOKEINTERFACE, jbc_INVOKENONVIRTUAL, jbc_INVOKESPECIAL, jbc_INVOKESTATIC, jbc_INVOKEVIRTUAL, jbc_IOR, jbc_IREM, jbc_IRETURN, jbc_ISHL, jbc_ISHR, jbc_ISTORE, jbc_ISTORE_0, jbc_ISTORE_1, jbc_ISTORE_2, jbc_ISTORE_3, jbc_ISUB, jbc_IUSHR, jbc_IXOR, jbc_JSR, jbc_JSR_W, jbc_L2D, jbc_L2F, jbc_L2I, jbc_LADD, jbc_LALOAD, jbc_LAND, jbc_LASTORE, jbc_LCMP, jbc_LCONST_0, jbc_LCONST_1, jbc_LDC, jbc_LDC_W, jbc_LDC2_W, jbc_LDIV, jbc_LLOAD, jbc_LLOAD_0, jbc_LLOAD_1, jbc_LLOAD_2, jbc_LLOAD_3, jbc_LMUL, jbc_LNEG, jbc_LOOKUPSWITCH, jbc_LOR, jbc_LREM, jbc_LRETURN, jbc_LSHL, jbc_LSHR, jbc_LSTORE, jbc_LSTORE_0, jbc_LSTORE_1, jbc_LSTORE_2, jbc_LSTORE_3, jbc_LSUB, jbc_LUSHR, jbc_LXOR, jbc_MONITORENTER, jbc_MONITOREXIT, jbc_MULTIANEWARRAY, jbc_NEW, jbc_NEWARRAY, jbc_NOP, jbc_POP, jbc_POP2, jbc_PUTFIELD, jbc_PUTSTATIC, jbc_RET, jbc_RETURN, jbc_SALOAD, jbc_SASTORE, jbc_SIPUSH, jbc_SWAP, jbc_TABLESWITCH, jbc_WIDE, NO_OF_OPERANDS, OPCODE_NAMES, PRODUCE_STACK, RESERVED, STATE_CLSINITERROR, STATE_CLSINITIALIZED, STATE_CLSINITIALIZING, STATE_CLSINITRUNNING, STATE_COMPILED, STATE_COMPILING, STATE_LOADED, STATE_LOADERROR, STATE_LOADING1, STATE_LOADING2, STATE_LOADING3, STATE_PREPARED, STATE_PREPAREERROR, STATE_PREPARING, STATE_SFINITERROR, STATE_SFINITIALIZED, STATE_SFINITIALIZING, STATE_UNLOADED, STATE_VERIFIED, STATE_VERIFYERROR, STATE_VERIFYING, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_CLASSEND, TC_DOUBLE, TC_FLOAT, TC_INT, TC_LONG, TC_PARAM, TC_PARAMEND, TC_SHORT, TC_VOID, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE |
|
Method Summary |
void |
forwardTraversal()
|
jq_InstanceField |
tryResolve(jq_InstanceField m)
|
jq_InstanceMethod |
tryResolve(jq_InstanceMethod m)
|
jq_Member |
tryResolve(jq_Member m)
|
jq_StaticField |
tryResolve(jq_StaticField m)
|
jq_StaticMethod |
tryResolve(jq_StaticMethod m)
|
void |
updateCPIndex(char index)
|
void |
updateMemberReference(jq_Member m,
byte tag)
|
void |
visitAALOAD()
|
void |
visitAASTORE()
|
void |
visitACONST(Object s)
|
void |
visitAGETFIELD(jq_InstanceField f)
|
void |
visitAGETSTATIC(jq_StaticField f)
|
void |
visitAINVOKE(byte op,
jq_Method f)
|
void |
visitALOAD(int i)
|
void |
visitAPUTFIELD(jq_InstanceField f)
|
void |
visitAPUTSTATIC(jq_StaticField f)
|
void |
visitARETURN()
|
void |
visitARRAYLENGTH()
|
void |
visitASTORE(int i)
|
void |
visitATHROW()
|
void |
visitBALOAD()
|
void |
visitBASTORE()
|
void |
visitBGETFIELD(jq_InstanceField f)
|
void |
visitBGETSTATIC(jq_StaticField f)
|
void |
visitBPUTFIELD(jq_InstanceField f)
|
void |
visitBPUTSTATIC(jq_StaticField f)
|
void |
visitBytecode()
|
void |
visitCALOAD()
|
void |
visitCASTORE()
|
void |
visitCGETFIELD(jq_InstanceField f)
|
void |
visitCGETSTATIC(jq_StaticField f)
|
void |
visitCHECKCAST(jq_Type f)
|
void |
visitCPUTFIELD(jq_InstanceField f)
|
void |
visitCPUTSTATIC(jq_StaticField f)
|
void |
visitD2F()
|
void |
visitD2I()
|
void |
visitD2L()
|
void |
visitDALOAD()
|
void |
visitDASTORE()
|
void |
visitDBINOP(byte op)
|
void |
visitDCMP2(byte op)
|
void |
visitDCONST(double c)
|
void |
visitDGETFIELD(jq_InstanceField f)
|
void |
visitDGETSTATIC(jq_StaticField f)
|
void |
visitDINVOKE(byte op,
jq_Method f)
|
void |
visitDLOAD(int i)
|
void |
visitDPUTFIELD(jq_InstanceField f)
|
void |
visitDPUTSTATIC(jq_StaticField f)
|
void |
visitDRETURN()
|
void |
visitDSTORE(int i)
|
void |
visitDUNOP(byte op)
|
void |
visitDUP_x1()
|
void |
visitDUP_x2()
|
void |
visitDUP()
|
void |
visitDUP2_x1()
|
void |
visitDUP2_x2()
|
void |
visitDUP2()
|
void |
visitF2D()
|
void |
visitF2I()
|
void |
visitF2L()
|
void |
visitFALOAD()
|
void |
visitFASTORE()
|
void |
visitFBINOP(byte op)
|
void |
visitFCMP2(byte op)
|
void |
visitFCONST(float c)
|
void |
visitFGETFIELD(jq_InstanceField f)
|
void |
visitFGETSTATIC(jq_StaticField f)
|
void |
visitFINVOKE(byte op,
jq_Method f)
|
void |
visitFLOAD(int i)
|
void |
visitFPUTFIELD(jq_InstanceField f)
|
void |
visitFPUTSTATIC(jq_StaticField f)
|
void |
visitFRETURN()
|
void |
visitFSTORE(int i)
|
void |
visitFUNOP(byte op)
|
void |
visitGOTO(int target)
|
void |
visitI2B()
|
void |
visitI2C()
|
void |
visitI2D()
|
void |
visitI2F()
|
void |
visitI2L()
|
void |
visitI2S()
|
void |
visitIALOAD()
|
void |
visitIASTORE()
|
void |
visitIBINOP(byte op)
|
void |
visitICONST(int c)
|
void |
visitIF(byte op,
int target)
|
void |
visitIFCMP(byte op,
int target)
|
void |
visitIFREF(byte op,
int target)
|
void |
visitIFREFCMP(byte op,
int target)
|
void |
visitIGETFIELD(jq_InstanceField f)
|
void |
visitIGETSTATIC(jq_StaticField f)
|
void |
visitIINC(int i,
int v)
|
void |
visitIINVOKE(byte op,
jq_Method f)
|
void |
visitILOAD(int i)
|
void |
visitINSTANCEOF(jq_Type f)
|
void |
visitIPUTFIELD(jq_InstanceField f)
|
void |
visitIPUTSTATIC(jq_StaticField f)
|
void |
visitIRETURN()
|
void |
visitISHIFT(byte op)
|
void |
visitISTORE(int i)
|
void |
visitIUNOP(byte op)
|
void |
visitJSR(int target)
|
void |
visitL2D()
|
void |
visitL2F()
|
void |
visitL2I()
|
void |
visitLALOAD()
|
void |
visitLASTORE()
|
void |
visitLBINOP(byte op)
|
void |
visitLCMP2()
|
void |
visitLCONST(long c)
|
void |
visitLGETFIELD(jq_InstanceField f)
|
void |
visitLGETSTATIC(jq_StaticField f)
|
void |
visitLINVOKE(byte op,
jq_Method f)
|
void |
visitLLOAD(int i)
|
void |
visitLOOKUPSWITCH(int default_target,
int[] values,
int[] targets)
|
void |
visitLPUTFIELD(jq_InstanceField f)
|
void |
visitLPUTSTATIC(jq_StaticField f)
|
void |
visitLRETURN()
|
void |
visitLSHIFT(byte op)
|
void |
visitLSTORE(int i)
|
void |
visitLUNOP(byte op)
|
void |
visitMONITOR(byte op)
|
void |
visitMULTINEWARRAY(jq_Type f,
char dim)
|
void |
visitNEW(jq_Type f)
|
void |
visitNEWARRAY(jq_Array f)
|
void |
visitNOP()
|
void |
visitPEI()
|
void |
visitPOP()
|
void |
visitPOP2()
|
void |
visitRET(int i)
|
void |
visitSALOAD()
|
void |
visitSASTORE()
|
void |
visitSGETFIELD(jq_InstanceField f)
|
void |
visitSGETSTATIC(jq_StaticField f)
|
void |
visitSPUTFIELD(jq_InstanceField f)
|
void |
visitSPUTSTATIC(jq_StaticField f)
|
void |
visitSWAP()
|
void |
visitTABLESWITCH(int default_target,
int low,
int high,
int[] targets)
|
void |
visitVINVOKE(byte op,
jq_Method f)
|
void |
visitVRETURN()
|
void |
visitZGETFIELD(jq_InstanceField f)
|
void |
visitZGETSTATIC(jq_StaticField f)
|
void |
visitZPUTFIELD(jq_InstanceField f)
|
void |
visitZPUTSTATIC(jq_StaticField f)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
state
protected final CompilationState state
clazz
protected final jq_Class clazz
method
protected final jq_Method method
bcs
protected final byte[] bcs
i_start
protected int i_start
i_end
protected int i_end
TRACE
protected boolean TRACE
out
protected PrintStream out
BINOP_ADD
public static final byte BINOP_ADD
- See Also:
- Constant Field Values
BINOP_SUB
public static final byte BINOP_SUB
- See Also:
- Constant Field Values
BINOP_MUL
public static final byte BINOP_MUL
- See Also:
- Constant Field Values
BINOP_DIV
public static final byte BINOP_DIV
- See Also:
- Constant Field Values
BINOP_REM
public static final byte BINOP_REM
- See Also:
- Constant Field Values
BINOP_AND
public static final byte BINOP_AND
- See Also:
- Constant Field Values
BINOP_OR
public static final byte BINOP_OR
- See Also:
- Constant Field Values
BINOP_XOR
public static final byte BINOP_XOR
- See Also:
- Constant Field Values
binopnames
public static final String[] binopnames
UNOP_NEG
public static final byte UNOP_NEG
- See Also:
- Constant Field Values
unopnames
public static final String[] unopnames
SHIFT_LEFT
public static final byte SHIFT_LEFT
- See Also:
- Constant Field Values
SHIFT_RIGHT
public static final byte SHIFT_RIGHT
- See Also:
- Constant Field Values
SHIFT_URIGHT
public static final byte SHIFT_URIGHT
- See Also:
- Constant Field Values
shiftopnames
public static final String[] shiftopnames
CMP_L
public static final byte CMP_L
- See Also:
- Constant Field Values
CMP_G
public static final byte CMP_G
- See Also:
- Constant Field Values
fcmpopnames
public static final String[] fcmpopnames
CMP_EQ
public static final byte CMP_EQ
- See Also:
- Constant Field Values
CMP_NE
public static final byte CMP_NE
- See Also:
- Constant Field Values
CMP_LT
public static final byte CMP_LT
- See Also:
- Constant Field Values
CMP_GE
public static final byte CMP_GE
- See Also:
- Constant Field Values
CMP_LE
public static final byte CMP_LE
- See Also:
- Constant Field Values
CMP_GT
public static final byte CMP_GT
- See Also:
- Constant Field Values
CMP_AE
public static final byte CMP_AE
- See Also:
- Constant Field Values
CMP_UNCOND
public static final byte CMP_UNCOND
- See Also:
- Constant Field Values
cmpopnames
public static final String[] cmpopnames
INVOKE_VIRTUAL
public static final byte INVOKE_VIRTUAL
- See Also:
- Constant Field Values
INVOKE_STATIC
public static final byte INVOKE_STATIC
- See Also:
- Constant Field Values
INVOKE_SPECIAL
public static final byte INVOKE_SPECIAL
- See Also:
- Constant Field Values
INVOKE_INTERFACE
public static final byte INVOKE_INTERFACE
- See Also:
- Constant Field Values
invokeopnames
public static final String[] invokeopnames
MONITOR_ENTER
public static final byte MONITOR_ENTER
- See Also:
- Constant Field Values
MONITOR_EXIT
public static final byte MONITOR_EXIT
- See Also:
- Constant Field Values
monitoropnames
public static final String[] monitoropnames
BytecodeVisitor
public BytecodeVisitor(jq_Method method)
- Creates new BytecodeVisitor
BytecodeVisitor
public BytecodeVisitor(CompilationState state,
jq_Method method)
- Creates new BytecodeVisitor
forwardTraversal
public void forwardTraversal()
throws VerifyError
- Throws:
VerifyError
tryResolve
public jq_StaticField tryResolve(jq_StaticField m)
tryResolve
public jq_InstanceField tryResolve(jq_InstanceField m)
tryResolve
public jq_StaticMethod tryResolve(jq_StaticMethod m)
tryResolve
public jq_InstanceMethod tryResolve(jq_InstanceMethod m)
tryResolve
public jq_Member tryResolve(jq_Member m)
updateCPIndex
public void updateCPIndex(char index)
updateMemberReference
public void updateMemberReference(jq_Member m,
byte tag)
visitBytecode
public void visitBytecode()
throws VerifyError
- Throws:
VerifyError
visitPEI
public void visitPEI()
visitNOP
public void visitNOP()
visitACONST
public void visitACONST(Object s)
visitICONST
public void visitICONST(int c)
visitLCONST
public void visitLCONST(long c)
visitFCONST
public void visitFCONST(float c)
visitDCONST
public void visitDCONST(double c)
visitILOAD
public void visitILOAD(int i)
visitLLOAD
public void visitLLOAD(int i)
visitFLOAD
public void visitFLOAD(int i)
visitDLOAD
public void visitDLOAD(int i)
visitALOAD
public void visitALOAD(int i)
visitISTORE
public void visitISTORE(int i)
visitLSTORE
public void visitLSTORE(int i)
visitFSTORE
public void visitFSTORE(int i)
visitDSTORE
public void visitDSTORE(int i)
visitASTORE
public void visitASTORE(int i)
visitIALOAD
public void visitIALOAD()
visitLALOAD
public void visitLALOAD()
visitFALOAD
public void visitFALOAD()