Package edu.umd.cs.findbugs.ba
Class ResourceValueFrameModelingVisitor
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
- edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
-
- All Implemented Interfaces:
org.apache.bcel.generic.Visitor,org.apache.bcel.generic.VisitorSupportsInvokeDynamic
- Direct Known Subclasses:
StreamFrameModelingVisitor
public abstract class ResourceValueFrameModelingVisitor extends AbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
-
Field Summary
-
Fields inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
cpg
-
-
Constructor Summary
Constructors Constructor Description ResourceValueFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description ResourceValuegetDefaultValue()Produce a "default" value.protected booleaninstanceEscapes(org.apache.bcel.generic.InvokeInstruction inv, int instanceArgNum)Override this to check for methods that it is legal to pass the instance to without the instance escaping.abstract voidtransferInstruction(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock)Subclasses must override this to model the effect of the given instruction on the current frame.voidvisitAASTORE(org.apache.bcel.generic.AASTORE arr)voidvisitARETURN(org.apache.bcel.generic.ARETURN ins)voidvisitCHECKCAST(org.apache.bcel.generic.CHECKCAST obj)voidvisitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE inv)voidvisitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL inv)voidvisitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC inv)voidvisitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL inv)voidvisitPUTFIELD(org.apache.bcel.generic.PUTFIELD putfield)voidvisitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC putstatic)-
Methods inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
analyzeInstruction, getCPG, getFrame, getLocation, getNumWordsConsumed, getNumWordsProduced, handleLoadInstruction, handleNormalInstruction, handleStoreInstruction, modelInstruction, modelNormalInstruction, setFrameAndLocation, visitAALOAD, visitACONST_NULL, visitAllocationInstruction, visitALOAD, visitANEWARRAY, visitArithmeticInstruction, visitArrayInstruction, visitARRAYLENGTH, visitASTORE, visitATHROW, visitBALOAD, visitBASTORE, visitBIPUSH, visitBranchInstruction, visitBREAKPOINT, visitCALOAD, visitCASTORE, visitConstantPushInstruction, visitConversionInstruction, visitConversionInstruction2, visitCPInstruction, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDASTORE, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDLOAD, visitDMUL, visitDNEG, visitDREM, visitDRETURN, visitDSTORE, visitDSUB, visitDUP, visitDUP_X1, visitDUP_X2, visitDUP2, visitDUP2_X1, visitDUP2_X2, visitExceptionThrower, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFASTORE, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFieldInstruction, visitFieldOrMethod, visitFLOAD, visitFMUL, visitFNEG, visitFREM, visitFRETURN, visitFSTORE, visitFSUB, visitGETFIELD, visitGETSTATIC, visitGOTO, visitGOTO_W, visitGotoInstruction, visitI2B, visitI2C, visitI2D, visitI2F, visitI2L, visitI2S, visitIADD, visitIALOAD, visitIAND, visitIASTORE, visitICONST, visitIDIV, 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, visitIINC, visitILOAD, visitIMPDEP1, visitIMPDEP2, visitIMUL, visitINEG, visitINSTANCEOF, visitINVOKEDYNAMIC, visitInvokeInstruction, visitIOR, visitIREM, visitIRETURN, visitISHL, visitISHR, visitISTORE, visitISUB, visitIUSHR, visitIXOR, visitJSR, visitJSR_W, visitJsrInstruction, visitL2D, visitL2F, visitL2I, visitLADD, visitLALOAD, visitLAND, visitLASTORE, visitLCMP, visitLCONST, visitLDC, visitLDC2_W, visitLDIV, visitLLOAD, visitLMUL, visitLNEG, visitLoadClass, visitLoadInstruction, visitLocalVariableInstruction, visitLOOKUPSWITCH, visitLOR, visitLREM, visitLRETURN, visitLSHL, visitLSHR, visitLSTORE, visitLSUB, visitLUSHR, visitLXOR, visitMONITORENTER, visitMONITOREXIT, visitMULTIANEWARRAY, visitNEW, visitNEWARRAY, visitNONNULL2Z, visitNOP, visitNULL2Z, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitRET, visitRETURN, visitReturnInstruction, visitSALOAD, visitSASTORE, visitSelect, visitSIPUSH, visitStackConsumer, visitStackInstruction, visitStackProducer, visitStoreInstruction, visitSWAP, visitTABLESWITCH, visitTypedInstruction, visitUnconditionalBranch, visitVariableLengthInstruction
-
-
-
-
Method Detail
-
getDefaultValue
public ResourceValue getDefaultValue()
Description copied from class:AbstractFrameModelingVisitorProduce a "default" value. This is what is pushed onto the stack by the handleNormalInstruction() method for instructions which produce stack values.- Specified by:
getDefaultValuein classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
transferInstruction
public abstract void transferInstruction(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock) throws DataflowAnalysisExceptionSubclasses must override this to model the effect of the given instruction on the current frame.- Throws:
DataflowAnalysisException
-
visitPUTFIELD
public void visitPUTFIELD(org.apache.bcel.generic.PUTFIELD putfield)
- Specified by:
visitPUTFIELDin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitPUTFIELDin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitAASTORE
public void visitAASTORE(org.apache.bcel.generic.AASTORE arr)
- Specified by:
visitAASTOREin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitAASTOREin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitPUTSTATIC
public void visitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC putstatic)
- Specified by:
visitPUTSTATICin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitPUTSTATICin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
instanceEscapes
protected boolean instanceEscapes(org.apache.bcel.generic.InvokeInstruction inv, int instanceArgNum)Override this to check for methods that it is legal to pass the instance to without the instance escaping. By default, we consider all methods to be possible escape routes.- Parameters:
inv- the InvokeInstruction to which the resource instance is passed as an argumentinstanceArgNum- the first argument the instance is passed in
-
visitCHECKCAST
public void visitCHECKCAST(org.apache.bcel.generic.CHECKCAST obj)
- Specified by:
visitCHECKCASTin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitCHECKCASTin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitINVOKEVIRTUAL
public void visitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL inv)
- Specified by:
visitINVOKEVIRTUALin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKEVIRTUALin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitINVOKEINTERFACE
public void visitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE inv)
- Specified by:
visitINVOKEINTERFACEin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKEINTERFACEin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitINVOKESPECIAL
public void visitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL inv)
- Specified by:
visitINVOKESPECIALin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKESPECIALin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitINVOKESTATIC
public void visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC inv)
- Specified by:
visitINVOKESTATICin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitINVOKESTATICin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
visitARETURN
public void visitARETURN(org.apache.bcel.generic.ARETURN ins)
- Specified by:
visitARETURNin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitARETURNin classAbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
-