java.lang.Object
Compil3r.BytecodeAnalysis.BytecodeVisitor
- All Implemented Interfaces:
- Clazz.jq_ClassFileConstants
- Direct Known Subclasses:
- ControlFlowGraph.BranchVisitor, ControlFlowGraph.InitialPass, LiveRefAnalysis.FirstPassVisitor, LiveRefAnalysis.SecondPassVisitor, ModRefAnalysis, StackDepthVisitor, Trimmer.TrimmerVisitor
- public class BytecodeVisitor
- extends java.lang.Object
- implements Clazz.jq_ClassFileConstants
| Fields inherited from interface Clazz.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_PREPARING, STATE_SFINITIALIZED, STATE_SFINITIALIZING, STATE_UNLOADED, STATE_VERIFIED, 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()
|
private byte |
getSignedByte()
|
private int |
getSignedDWord()
|
private short |
getSignedWord()
|
private char |
getUnsignedByte()
|
private char |
getUnsignedWord()
|
Clazz.jq_InstanceField |
resolve(Clazz.jq_InstanceField m)
|
Clazz.jq_InstanceMethod |
resolve(Clazz.jq_InstanceMethod m)
|
Clazz.jq_Member |
resolve(Clazz.jq_Member m)
|
Clazz.jq_StaticField |
resolve(Clazz.jq_StaticField m)
|
Clazz.jq_StaticMethod |
resolve(Clazz.jq_StaticMethod m)
|
void |
updateCPIndex(char index)
|
void |
updateMemberReference(Clazz.jq_Member m,
byte tag)
|
void |
visitAALOAD()
|
void |
visitAASTORE()
|
void |
visitACONST(java.lang.Object s)
|
void |
visitAGETFIELD(Clazz.jq_InstanceField f)
|
void |
visitAGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitAINVOKE(byte op,
Clazz.jq_Method f)
|
void |
visitALOAD(int i)
|
void |
visitAPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitAPUTSTATIC(Clazz.jq_StaticField f)
|
void |
visitARETURN()
|
void |
visitARRAYLENGTH()
|
void |
visitASTORE(int i)
|
void |
visitATHROW()
|
void |
visitBALOAD()
|
void |
visitBASTORE()
|
void |
visitBGETFIELD(Clazz.jq_InstanceField f)
|
void |
visitBGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitBPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitBPUTSTATIC(Clazz.jq_StaticField f)
|
void |
visitBytecode()
|
void |
visitCALOAD()
|
void |
visitCASTORE()
|
void |
visitCGETFIELD(Clazz.jq_InstanceField f)
|
void |
visitCGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitCHECKCAST(Clazz.jq_Type f)
|
void |
visitCPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitCPUTSTATIC(Clazz.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(Clazz.jq_InstanceField f)
|
void |
visitDGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitDINVOKE(byte op,
Clazz.jq_Method f)
|
void |
visitDLOAD(int i)
|
void |
visitDPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitDPUTSTATIC(Clazz.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(Clazz.jq_InstanceField f)
|
void |
visitFGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitFINVOKE(byte op,
Clazz.jq_Method f)
|
void |
visitFLOAD(int i)
|
void |
visitFPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitFPUTSTATIC(Clazz.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(Clazz.jq_InstanceField f)
|
void |
visitIGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitIINC(int i,
int v)
|
void |
visitIINVOKE(byte op,
Clazz.jq_Method f)
|
void |
visitILOAD(int i)
|
void |
visitINSTANCEOF(Clazz.jq_Type f)
|
void |
visitIPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitIPUTSTATIC(Clazz.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(Clazz.jq_InstanceField f)
|
void |
visitLGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitLINVOKE(byte op,
Clazz.jq_Method f)
|
void |
visitLLOAD(int i)
|
void |
visitLOOKUPSWITCH(int default_target,
int[] values,
int[] targets)
|
void |
visitLPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitLPUTSTATIC(Clazz.jq_StaticField f)
|
void |
visitLRETURN()
|
void |
visitLSHIFT(byte op)
|
void |
visitLSTORE(int i)
|
void |
visitLUNOP(byte op)
|
void |
visitMONITOR(byte op)
|
void |
visitMULTINEWARRAY(Clazz.jq_Type f,
char dim)
|
void |
visitNEW(Clazz.jq_Type f)
|
void |
visitNEWARRAY(Clazz.jq_Array f)
|
void |
visitNOP()
|
void |
visitPEI()
|
void |
visitPOP()
|
void |
visitPOP2()
|
void |
visitRET(int i)
|
void |
visitSALOAD()
|
void |
visitSASTORE()
|
void |
visitSGETFIELD(Clazz.jq_InstanceField f)
|
void |
visitSGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitSPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitSPUTSTATIC(Clazz.jq_StaticField f)
|
void |
visitSWAP()
|
void |
visitTABLESWITCH(int default_target,
int low,
int high,
int[] targets)
|
void |
visitVINVOKE(byte op,
Clazz.jq_Method f)
|
void |
visitVRETURN()
|
void |
visitZGETFIELD(Clazz.jq_InstanceField f)
|
void |
visitZGETSTATIC(Clazz.jq_StaticField f)
|
void |
visitZPUTFIELD(Clazz.jq_InstanceField f)
|
void |
visitZPUTSTATIC(Clazz.jq_StaticField f)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
clazz
protected final Clazz.jq_Class clazz
method
protected final Clazz.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 java.io.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 java.lang.String[] binopnames
UNOP_NEG
public static final byte UNOP_NEG
- See Also:
- Constant Field Values
unopnames
public static final java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.String[] monitoropnames
BytecodeVisitor
public BytecodeVisitor(Clazz.jq_Method method)
- Creates new BytecodeVisitor
forwardTraversal
public void forwardTraversal()
throws java.lang.VerifyError
resolve
public Clazz.jq_StaticField resolve(Clazz.jq_StaticField m)
resolve
public Clazz.jq_InstanceField resolve(Clazz.jq_InstanceField m)
resolve
public Clazz.jq_StaticMethod resolve(Clazz.jq_StaticMethod m)
resolve
public Clazz.jq_InstanceMethod resolve(Clazz.jq_InstanceMethod m)
resolve
public Clazz.jq_Member resolve(Clazz.jq_Member m)
updateCPIndex
public void updateCPIndex(char index)
updateMemberReference
public void updateMemberReference(Clazz.jq_Member m,
byte tag)
visitBytecode
public void visitBytecode()
throws java.lang.VerifyError
visitPEI
public void visitPEI()
visitNOP
public void visitNOP()
visitACONST
public void visitACONST(java.lang.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()
visitDALOAD
public void visitDALOAD()
visitAALOAD
public void visitAALOAD()
visitBALOAD
public void visitBALOAD()
visitCALOAD
public void visitCALOAD()
visitSALOAD
public void visitSALOAD()
visitIASTORE
public void visitIASTORE()
visitLASTORE
public void visitLASTORE()
visitFASTORE
public void visitFASTORE()
visitDASTORE
public void visitDASTORE()
visitAASTORE
public void visitAASTORE()
visitBASTORE
public void visitBASTORE()
visitCASTORE
public void visitCASTORE()
visitSASTORE
public void visitSASTORE()
visitPOP
public void visitPOP()
visitPOP2
public void visitPOP2()
visitDUP
public void visitDUP()
visitDUP_x1
public void visitDUP_x1()
visitDUP_x2
public void visitDUP_x2()
visitDUP2
public void visitDUP2()
visitDUP2_x1
public void visitDUP2_x1()
visitDUP2_x2
public void visitDUP2_x2()
visitSWAP
public void visitSWAP()
visitIBINOP
public void visitIBINOP(byte op)
visitLBINOP
public void visitLBINOP(byte op)
visitFBINOP
public void visitFBINOP(byte op)
visitDBINOP
public void visitDBINOP(byte op)
visitIUNOP
public void visitIUNOP(byte op)
visitLUNOP
public void visitLUNOP(byte op)
visitFUNOP
public void visitFUNOP(byte op)
visitDUNOP
public void visitDUNOP(byte op)
visitISHIFT
public void visitISHIFT(byte op)
visitLSHIFT
public void visitLSHIFT(byte op)
visitIINC
public void visitIINC(int i,
int v)
visitI2L
public void visitI2L()
visitI2F
public void visitI2F()
visitI2D
public void visitI2D()
visitL2I
public void visitL2I()
visitL2F
public void visitL2F()
visitL2D
public void visitL2D()
visitF2I
public void visitF2I()
visitF2L
public void visitF2L()
visitF2D
public void visitF2D()
visitD2I
public void visitD2I()
visitD2L
public void visitD2L()
visitD2F
public void visitD2F()
visitI2B
public void visitI2B()
visitI2C
public void visitI2C()
visitI2S
public void visitI2S()
visitLCMP2
public void visitLCMP2()
visitFCMP2
public void visitFCMP2(byte op)
visitDCMP2
public void visitDCMP2(byte op)
<