joeq.Compiler.BytecodeAnalysis
Class TypeAnalysis.TypeAnalysisVisitor

java.lang.Object
  extended byjoeq.Compiler.BytecodeAnalysis.BytecodeVisitor
      extended byjoeq.Compiler.BytecodeAnalysis.StackDepthVisitor
          extended byjoeq.Compiler.BytecodeAnalysis.TypeAnalysis.TypeAnalysisVisitor
All Implemented Interfaces:
CompilationConstants, jq_ClassFileConstants
Direct Known Subclasses:
TypeAnalysis.ScalarReplacementVisitor
Enclosing class:
TypeAnalysis

public static class TypeAnalysis.TypeAnalysisVisitor
extends StackDepthVisitor


Field Summary
static boolean ALWAYS_TRACE
           
static boolean BY_PACKAGE
           
static int MAX_DEPTH
           
static HashSet trace_method_names
           
 
Fields inherited from class joeq.Compiler.BytecodeAnalysis.StackDepthVisitor
cfg, currentStackDepth
 
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
 joeq.Compiler.BytecodeAnalysis.TypeAnalysis.SetOfLocations applySummary(joeq.Compiler.BytecodeAnalysis.TypeAnalysis.AnalysisState state, jq_Method f, TypeAnalysis.AnalysisSummary summary, boolean ex)
           
 String toString()
           
 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 visitASTORE(int i)
           
 void visitATHROW()
           
 void visitBasicBlock(BasicBlock bb)
           
 void visitCHECKCAST(jq_Type f)
           
 void visitDALOAD()
           
 void visitDINVOKE(byte op, jq_Method f)
           
 void visitDSTORE(int i)
           
 void visitDUP_x1()
           
 void visitDUP_x2()
           
 void visitDUP()
           
 void visitDUP2_x1()
           
 void visitDUP2_x2()
           
 void visitDUP2()
           
 void visitFALOAD()
           
 void visitFINVOKE(byte op, jq_Method f)
           
 void visitFSTORE(int i)
           
 void visitIALOAD()
           
 void visitIINVOKE(byte op, jq_Method f)
           
 void visitISTORE(int i)
           
 void visitJSR(int target)
           
 void visitLALOAD()
           
 void visitLINVOKE(byte op, jq_Method f)
           
 void visitLSTORE(int i)
           
 void visitMONITOR(byte op)
           
 void visitMULTINEWARRAY(jq_Type f, char dim)
           
 void visitNEW(jq_Type f)
           
 void visitNEWARRAY(jq_Array f)
           
 void visitPOP()
           
 void visitPOP2()
           
 void visitRET(int loc)
           
 void visitSWAP()
           
 void visitVINVOKE(byte op, jq_Method f)
           
 
Methods inherited from class joeq.Compiler.BytecodeAnalysis.StackDepthVisitor
go, visitBALOAD, visitBASTORE, visitBGETSTATIC, visitBPUTFIELD, visitBPUTSTATIC, visitCALOAD, visitCASTORE, visitCGETSTATIC, visitCPUTFIELD, visitCPUTSTATIC, visitD2F, visitD2I, visitDASTORE, visitDBINOP, visitDCMP2, visitDCONST, visitDGETFIELD, visitDGETSTATIC, visitDLOAD, visitDPUTFIELD, visitDPUTSTATIC, visitDRETURN, visitF2D, visitF2L, visitFASTORE, visitFBINOP, visitFCMP2, visitFCONST, visitFGETSTATIC, visitFLOAD, visitFPUTFIELD, visitFPUTSTATIC, visitFRETURN, visitI2D, visitI2L, visitIASTORE, visitIBINOP, visitICONST, visitIF, visitIFCMP, visitIFREF, visitIFREFCMP, visitIGETSTATIC, visitILOAD, visitIPUTFIELD, visitIPUTSTATIC, visitIRETURN, visitISHIFT, visitL2F, visitL2I, visitLASTORE, visitLBINOP, visitLCMP2, visitLCONST, visitLGETFIELD, visitLGETSTATIC, visitLLOAD, visitLOOKUPSWITCH, visitLPUTFIELD, visitLPUTSTATIC, visitLRETURN, visitLSHIFT, visitSALOAD, visitSASTORE, visitSGETSTATIC, visitSPUTFIELD, visitSPUTSTATIC, visitTABLESWITCH, visitVRETURN, visitZGETSTATIC, visitZPUTFIELD, visitZPUTSTATIC
 
Methods inherited from class joeq.Compiler.BytecodeAnalysis.BytecodeVisitor
forwardTraversal, tryResolve, tryResolve, tryResolve, tryResolve, tryResolve, updateCPIndex, updateMemberReference, visitARRAYLENGTH, visitBGETFIELD, visitBytecode, visitCGETFIELD, visitD2L, visitDUNOP, visitF2I, visitFGETFIELD, visitFUNOP, visitGOTO, visitI2B, visitI2C, visitI2F, visitI2S, visitIGETFIELD, visitIINC, visitINSTANCEOF, visitIUNOP, visitL2D, visitLUNOP, visitNOP, visitPEI, visitSGETFIELD, visitZGETFIELD
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ALWAYS_TRACE

public static boolean ALWAYS_TRACE

trace_method_names

public static HashSet trace_method_names

MAX_DEPTH

public static int MAX_DEPTH

BY_PACKAGE

public static boolean BY_PACKAGE
Method Detail

toString

public String toString()

visitBasicBlock

public void visitBasicBlock(BasicBlock bb)
Overrides:
visitBasicBlock in class StackDepthVisitor

visitACONST

public void visitACONST(Object s)
Overrides:
visitACONST in class StackDepthVisitor

visitALOAD

public void visitALOAD(int i)
Overrides:
visitALOAD in class StackDepthVisitor

visitISTORE

public void visitISTORE(int i)
Overrides:
visitISTORE in class StackDepthVisitor

visitFSTORE

public void visitFSTORE(int i)
Overrides:
visitFSTORE in class StackDepthVisitor

visitLSTORE

public void visitLSTORE(int i)
Overrides:
visitLSTORE in class StackDepthVisitor

visitDSTORE

public void visitDSTORE(int i)
Overrides:
visitDSTORE in class StackDepthVisitor

visitASTORE

public void visitASTORE(int i)
Overrides:
visitASTORE in class StackDepthVisitor

visitIALOAD

public void visitIALOAD()
Overrides:
visitIALOAD in class StackDepthVisitor

visitFALOAD

public void visitFALOAD()
Overrides:
visitFALOAD in class StackDepthVisitor

visitLALOAD

public void visitLALOAD()
Overrides:
visitLALOAD in class BytecodeVisitor

visitDALOAD

public void visitDALOAD()
Overrides:
visitDALOAD in class BytecodeVisitor

visitAALOAD

public void visitAALOAD()
Overrides:
visitAALOAD in class StackDepthVisitor

visitAASTORE

public void visitAASTORE()
Overrides:
visitAASTORE in class StackDepthVisitor

visitARETURN

public void visitARETURN()
Overrides:
visitARETURN in class StackDepthVisitor

visitAGETSTATIC

public void visitAGETSTATIC(jq_StaticField f)
Overrides:
visitAGETSTATIC in class StackDepthVisitor

visitAPUTSTATIC

public void visitAPUTSTATIC(jq_StaticField f)
Overrides:
visitAPUTSTATIC in class StackDepthVisitor

visitAGETFIELD

public void visitAGETFIELD(jq_InstanceField f)
Overrides:
visitAGETFIELD in class BytecodeVisitor

visitAPUTFIELD

public void visitAPUTFIELD(jq_InstanceField f)
Overrides:
visitAPUTFIELD in class StackDepthVisitor

applySummary

public joeq.Compiler.BytecodeAnalysis.TypeAnalysis.SetOfLocations applySummary(joeq.Compiler.BytecodeAnalysis.TypeAnalysis.AnalysisState state,
                                                                               jq_Method f,
                                                                               TypeAnalysis.AnalysisSummary summary,
                                                                               boolean ex)

visitIINVOKE

public void visitIINVOKE(byte op,
                         jq_Method f)
Overrides:
visitIINVOKE in class StackDepthVisitor

visitLINVOKE

public void visitLINVOKE(byte op,
                         jq_Method f)
Overrides:
visitLINVOKE in class StackDepthVisitor

visitFINVOKE

public void visitFINVOKE(byte op,
                         jq_Method f)
Overrides:
visitFINVOKE in class StackDepthVisitor

visitDINVOKE

public void visitDINVOKE(byte op,
                         jq_Method f)
Overrides:
visitDINVOKE in class StackDepthVisitor

visitAINVOKE

public void visitAINVOKE(byte op,
                         jq_Method f)
Overrides:
visitAINVOKE in class StackDepthVisitor

visitVINVOKE

public void visitVINVOKE(byte op,
                         jq_Method f)
Overrides:
visitVINVOKE in class StackDepthVisitor

visitNEW

public void visitNEW(jq_Type f)
Overrides:
visitNEW in class StackDepthVisitor

visitNEWARRAY

public void visitNEWARRAY(jq_Array f)
Overrides:
visitNEWARRAY in class BytecodeVisitor

visitCHECKCAST

public void visitCHECKCAST(jq_Type f)
Overrides:
visitCHECKCAST in class BytecodeVisitor

visitATHROW

public void visitATHROW()
Overrides:
visitATHROW in class StackDepthVisitor

visitMONITOR

public void visitMONITOR(byte op)
Overrides:
visitMONITOR in class StackDepthVisitor

visitMULTINEWARRAY

public void visitMULTINEWARRAY(jq_Type f,
                               char dim)
Overrides:
visitMULTINEWARRAY in class StackDepthVisitor

visitPOP

public void visitPOP()
Overrides:
visitPOP in class StackDepthVisitor

visitPOP2

public void visitPOP2()
Overrides:
visitPOP2 in class StackDepthVisitor

visitDUP

public void visitDUP()
Overrides:
visitDUP in class StackDepthVisitor

visitDUP_x1

public void visitDUP_x1()
Overrides:
visitDUP_x1 in class StackDepthVisitor

visitDUP_x2

public void visitDUP_x2()
Overrides:
visitDUP_x2 in class StackDepthVisitor

visitDUP2

public void visitDUP2()
Overrides:
visitDUP2 in class StackDepthVisitor

visitDUP2_x1

public void visitDUP2_x1()
Overrides:
visitDUP2_x1 in class StackDepthVisitor

visitDUP2_x2

public void visitDUP2_x2()
Overrides:
visitDUP2_x2 in class StackDepthVisitor

visitSWAP

public void visitSWAP()
Overrides:
visitSWAP in class BytecodeVisitor

visitJSR

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

visitRET

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


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