joeq.Compiler.BytecodeAnalysis
Class ControlFlowGraph.InitialPass

java.lang.Object
  extended by joeq.Compiler.BytecodeAnalysis.BytecodeVisitor
      extended by joeq.Compiler.BytecodeAnalysis.ControlFlowGraph.InitialPass
All Implemented Interfaces:
jq_ClassFileConstants, CompilationConstants
Enclosing class:
ControlFlowGraph

public static class ControlFlowGraph.InitialPass
extends BytecodeVisitor

Visitor to perform the initial pass over the bytecode.


Field Summary
 
Fields inherited from class joeq.Compiler.BytecodeAnalysis.BytecodeVisitor
bcs, BINOP_ADD, BINOP_AND, BINOP_DIV, BINOP_MUL, BINOP_OR, BINOP_REM, BINOP_SUB, BINOP_XOR, binopnames, clazz, CMP_AE, CMP_EQ, CMP_G, CMP_GE, CMP_GT, CMP_L, CMP_LE, CMP_LT, CMP_NE, CMP_UNCOND, cmpopnames, fcmpopnames, i_end, i_start, INVOKE_INTERFACE, INVOKE_SPECIAL, INVOKE_STATIC, INVOKE_VIRTUAL, invokeopnames, method, MONITOR_ENTER, MONITOR_EXIT, monitoropnames, out, SHIFT_LEFT, SHIFT_RIGHT, SHIFT_URIGHT, shiftopnames, state, TRACE, UNOP_NEG, unopnames
 
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
 
Fields inherited from interface joeq.Compiler.CompilationConstants
MAYBE, NO, YES
 
Method Summary
 jwutil.math.BitString getBasicBlockStart()
           
 jwutil.math.BitString getBranchLocations()
           
 int getNumberOfExits()
           
 String toString()
           
 void visitARETURN()
           
 void visitATHROW()
           
 void visitDRETURN()
           
 void visitFRETURN()
           
 void visitGOTO(int target)
           
 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 visitIRETURN()
           
 void visitJSR(int target)
           
 void visitLOOKUPSWITCH(int default_target, int[] values, int[] targets)
           
 void visitLRETURN()
           
 void visitRET(int i)
           
 void visitTABLESWITCH(int default_target, int low, int high, int[] targets)
           
 void visitVRETURN()
           
 
Methods inherited from class joeq.Compiler.BytecodeAnalysis.BytecodeVisitor
forwardTraversal, tryResolve, tryResolve, tryResolve, tryResolve, tryResolve, updateCPIndex, updateMemberReference, visitAALOAD, visitAASTORE, visitACONST, visitAGETFIELD, visitAGETSTATIC, visitAINVOKE, visitALOAD, visitAPUTFIELD, visitAPUTSTATIC, visitARRAYLENGTH, visitASTORE, visitBALOAD, visitBASTORE, visitBGETFIELD, visitBGETSTATIC, visitBPUTFIELD, visitBPUTSTATIC, visitBytecode, visitCALOAD, visitCASTORE, visitCGETFIELD, visitCGETSTATIC, visitCHECKCAST, visitCPUTFIELD, visitCPUTSTATIC, visitD2F, visitD2I, visitD2L, visitDALOAD, visitDASTORE, visitDBINOP, visitDCMP2, visitDCONST, visitDGETFIELD, visitDGETSTATIC, visitDINVOKE, visitDLOAD, visitDPUTFIELD, visitDPUTSTATIC, visitDSTORE, visitDUNOP, visitDUP_x1, visitDUP_x2, visitDUP, visitDUP2_x1, visitDUP2_x2, visitDUP2, visitF2D, visitF2I, visitF2L, visitFALOAD, visitFASTORE, visitFBINOP, visitFCMP2, visitFCONST, visitFGETFIELD, visitFGETSTATIC, visitFINVOKE, visitFLOAD, visitFPUTFIELD, visitFPUTSTATIC, visitFSTORE, visitFUNOP, visitI2B, visitI2C, visitI2D, visitI2F, visitI2L, visitI2S, visitIALOAD, visitIASTORE, visitIBINOP, visitICONST, visitIGETFIELD, visitIGETSTATIC, visitIINC, visitIINVOKE, visitILOAD, visitINSTANCEOF, visitIPUTFIELD, visitIPUTSTATIC, visitISHIFT, visitISTORE, visitIUNOP, visitL2D, visitL2F, visitL2I, visitLALOAD, visitLASTORE, visitLBINOP, visitLCMP2, visitLCONST, visitLGETFIELD, visitLGETSTATIC, visitLINVOKE, visitLLOAD, visitLPUTFIELD, visitLPUTSTATIC, visitLSHIFT, visitLSTORE, visitLUNOP, visitMONITOR, visitMULTINEWARRAY, visitNEW, visitNEWARRAY, visitNOP, visitPEI, visitPOP, visitPOP2, visitSALOAD, visitSASTORE, visitSGETFIELD, visitSGETSTATIC, visitSPUTFIELD, visitSPUTSTATIC, visitSWAP, visitVINVOKE, visitZGETFIELD, visitZGETSTATIC, visitZPUTFIELD, visitZPUTSTATIC
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

toString

public String toString()
Overrides:
toString in class Object

getBasicBlockStart

public jwutil.math.BitString getBasicBlockStart()

getBranchLocations

public jwutil.math.BitString getBranchLocations()

getNumberOfExits

public int getNumberOfExits()

visitJSR

public void visitJSR(int target)
Overrides:
visitJSR in class BytecodeVisitor

visitGOTO

public void visitGOTO(int target)
Overrides:
visitGOTO in class BytecodeVisitor

visitIRETURN

public void visitIRETURN()
Overrides:
visitIRETURN in class BytecodeVisitor

visitLRETURN

public void visitLRETURN()
Overrides:
visitLRETURN in class BytecodeVisitor

visitFRETURN

public void visitFRETURN()
Overrides:
visitFRETURN in class BytecodeVisitor

visitDRETURN

public void visitDRETURN()
Overrides:
visitDRETURN in class BytecodeVisitor

visitARETURN

public void visitARETURN()
Overrides:
visitARETURN in class BytecodeVisitor

visitVRETURN

public void visitVRETURN()
Overrides:
visitVRETURN in class BytecodeVisitor

visitATHROW

public void visitATHROW()
Overrides:
visitATHROW in class BytecodeVisitor

visitRET

public void visitRET(int i)
Overrides:
visitRET in class BytecodeVisitor

visitIF

public void visitIF(byte op,
                    int target)
Overrides:
visitIF in class BytecodeVisitor

visitIFREF

public void visitIFREF(byte op,
                       int target)
Overrides:
visitIFREF in class BytecodeVisitor

visitIFCMP

public void visitIFCMP(byte op,
                       int target)
Overrides:
visitIFCMP in class BytecodeVisitor

visitIFREFCMP

public void visitIFREFCMP(byte op,
                          int target)
Overrides:
visitIFREFCMP in class BytecodeVisitor

visitTABLESWITCH

public void visitTABLESWITCH(int default_target,
                             int low,
                             int high,
                             int[] targets)
Overrides:
visitTABLESWITCH in class BytecodeVisitor

visitLOOKUPSWITCH

public void visitLOOKUPSWITCH(int default_target,
                              int[] values,
                              int[] targets)
Overrides:
visitLOOKUPSWITCH in class BytecodeVisitor


Copyright © 2001-2008 John Whaley. All Rights Reserved.