edu.umd.cs.findbugs.detect
Class FindRefComparison.RefComparisonTypeFrameModelingVisitor

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<org.apache.bcel.generic.Type,TypeFrame>
      extended by edu.umd.cs.findbugs.ba.TypeFrameModelingVisitor
          extended by edu.umd.cs.findbugs.detect.FindRefComparison.RefComparisonTypeFrameModelingVisitor
All Implemented Interfaces:
Debug, org.apache.bcel.Constants, org.apache.bcel.generic.Visitor
Enclosing class:
FindRefComparison

private static class FindRefComparison.RefComparisonTypeFrameModelingVisitor
extends TypeFrameModelingVisitor


Field Summary
private  RepositoryLookupFailureCallback lookupFailureCallback
           
 
Fields inherited from interface org.apache.bcel.Constants
AALOAD, AASTORE, 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, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CLASS_TYPE_NAMES, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, 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, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, 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, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, 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, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
 
Fields inherited from interface edu.umd.cs.findbugs.ba.Debug
CHECK_ASSERTIONS, VERIFY_INTEGRITY
 
Constructor Summary
FindRefComparison.RefComparisonTypeFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, RepositoryLookupFailureCallback lookupFailureCallback)
           
 
Method Summary
private  void handleInstanceMethod(org.apache.bcel.generic.InvokeInstruction obj)
           
private  void handleLoad(org.apache.bcel.generic.FieldInstruction obj)
           
private  boolean isString(org.apache.bcel.generic.Type type)
           
private  boolean returnsString(org.apache.bcel.generic.InvokeInstruction inv)
           
 void visitGETFIELD(org.apache.bcel.generic.GETFIELD obj)
           
 void visitGETSTATIC(org.apache.bcel.generic.GETSTATIC obj)
           
 void visitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE obj)
           
 void visitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL obj)
           
 void visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC obj)
           
 void visitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL obj)
           
 void visitLDC(org.apache.bcel.generic.LDC obj)
           
 void visitLDC2_W(org.apache.bcel.generic.LDC2_W obj)
           
 
Methods inherited from class edu.umd.cs.findbugs.ba.TypeFrameModelingVisitor
consumeStack, getDefaultValue, modelNormalInstruction, pushReturnType, pushValue, visitAALOAD, visitACONST_NULL, visitANEWARRAY, visitARRAYLENGTH, visitBALOAD, visitBIPUSH, visitCALOAD, visitCHECKCAST, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDMUL, visitDNEG, visitDREM, visitDSUB, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFMUL, visitFNEG, visitFREM, visitFSUB, visitI2B, visitI2C, visitI2D, visitI2F, visitI2L, visitI2S, visitIADD, visitIALOAD, visitIAND, visitICONST, visitIDIV, visitIINC, visitIMUL, visitINEG, visitINSTANCEOF, visitIOR, visitIREM, visitISHL, visitISHR, visitISUB, visitIUSHR, visitIXOR, visitJSR_W, visitJSR, visitL2D, visitL2F, visitL2I, visitLADD, visitLALOAD, visitLAND, visitLCMP, visitLCONST, visitLDIV, visitLMUL, visitLNEG, visitLOR, visitLREM, visitLSHL, visitLSHR, visitLSUB, visitLUSHR, visitLXOR, visitMULTIANEWARRAY, visitNEW, visitNEWARRAY, visitRET, visitSALOAD, visitSIPUSH
 
Methods inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
getCPG, getFrame, getNumWordsConsumed, getNumWordsProduced, handleLoadInstruction, handleNormalInstruction, handleStoreInstruction, setFrame, visitAASTORE, visitAllocationInstruction, visitALOAD, visitARETURN, visitArithmeticInstruction, visitArrayInstruction, visitASTORE, visitATHROW, visitBASTORE, visitBranchInstruction, visitBREAKPOINT, visitCASTORE, visitConstantPushInstruction, visitConversionInstruction, visitCPInstruction, visitDASTORE, visitDLOAD, visitDRETURN, visitDSTORE, visitDUP_X1, visitDUP_X2, visitDUP, visitDUP2_X1, visitDUP2_X2, visitDUP2, visitExceptionThrower, visitFASTORE, visitFieldInstruction, visitFieldOrMethod, visitFLOAD, visitFRETURN, visitFSTORE, visitGOTO_W, visitGOTO, visitGotoInstruction, visitIASTORE, visitIF_ACMPEQ, visitIF_ACMPNE, visitIF_ICMPEQ, visitIF_ICMPGE, visitIF_ICMPGT, visitIF_ICMPLE, visitIF_ICMPLT, visitIF_ICMPNE, visitIFEQ, visitIFGE, visitIFGT, visitIfInstruction, visitIFLE, visitIFLT, visitIFNE, visitIFNONNULL, visitIFNULL, visitILOAD, visitIMPDEP1, visitIMPDEP2, visitInvokeInstruction, visitIRETURN, visitISTORE, visitJsrInstruction, visitLASTORE, visitLLOAD, visitLoadClass, visitLoadInstruction, visitLocalVariableInstruction, visitLOOKUPSWITCH, visitLRETURN, visitLSTORE, visitMONITORENTER, visitMONITOREXIT, visitNOP, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitPUTFIELD, visitPUTSTATIC, visitRETURN, visitReturnInstruction, visitSASTORE, visitSelect, visitStackConsumer, visitStackInstruction, visitStackProducer, visitStoreInstruction, visitSWAP, visitTABLESWITCH, visitTypedInstruction, visitUnconditionalBranch, visitVariableLengthInstruction
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lookupFailureCallback

private RepositoryLookupFailureCallback lookupFailureCallback
Constructor Detail

FindRefComparison.RefComparisonTypeFrameModelingVisitor

public FindRefComparison.RefComparisonTypeFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg,
                                                               RepositoryLookupFailureCallback lookupFailureCallback)
Method Detail

visitINVOKESTATIC

public void visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC obj)
Specified by:
visitINVOKESTATIC in interface org.apache.bcel.generic.Visitor
Overrides:
visitINVOKESTATIC in class TypeFrameModelingVisitor

visitINVOKESPECIAL

public void visitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL obj)
Specified by:
visitINVOKESPECIAL in interface org.apache.bcel.generic.Visitor
Overrides:
visitINVOKESPECIAL in class TypeFrameModelingVisitor

visitINVOKEINTERFACE

public void visitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE obj)
Specified by:
visitINVOKEINTERFACE in interface org.apache.bcel.generic.Visitor
Overrides:
visitINVOKEINTERFACE in class TypeFrameModelingVisitor

visitINVOKEVIRTUAL

public void visitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL obj)
Specified by:
visitINVOKEVIRTUAL in interface org.apache.bcel.generic.Visitor
Overrides:
visitINVOKEVIRTUAL in class TypeFrameModelingVisitor

returnsString

private boolean returnsString(org.apache.bcel.generic.InvokeInstruction inv)

handleInstanceMethod

private void handleInstanceMethod(org.apache.bcel.generic.InvokeInstruction obj)

visitLDC

public void visitLDC(org.apache.bcel.generic.LDC obj)
Specified by:
visitLDC in interface org.apache.bcel.generic.Visitor
Overrides:
visitLDC in class TypeFrameModelingVisitor

visitLDC2_W

public void visitLDC2_W(org.apache.bcel.generic.LDC2_W obj)
Specified by:
visitLDC2_W in interface org.apache.bcel.generic.Visitor
Overrides:
visitLDC2_W in class TypeFrameModelingVisitor

isString

private boolean isString(org.apache.bcel.generic.Type type)

visitGETSTATIC

public void visitGETSTATIC(org.apache.bcel.generic.GETSTATIC obj)
Specified by:
visitGETSTATIC in interface org.apache.bcel.generic.Visitor
Overrides:
visitGETSTATIC in class TypeFrameModelingVisitor

visitGETFIELD

public void visitGETFIELD(org.apache.bcel.generic.GETFIELD obj)
Specified by:
visitGETFIELD in interface org.apache.bcel.generic.Visitor
Overrides:
visitGETFIELD in class TypeFrameModelingVisitor

handleLoad

private void handleLoad(org.apache.bcel.generic.FieldInstruction obj)