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
- Direct Known Subclasses:
FindUnreleasedLock.LockFrameModelingVisitor, StreamFrameModelingVisitor
public abstract class ResourceValueFrameModelingVisitor
extends AbstractFrameModelingVisitor<ResourceValue, ResourceValueFrame>
-
Field Summary
Fields inherited from class AbstractFrameModelingVisitor
cpg -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedResourceValueFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg) -
Method Summary
Modifier and TypeMethodDescriptionProduce a "default" value.private voidhandleArrayStore(org.apache.bcel.generic.ArrayInstruction ins) private voidhandleFieldStore(org.apache.bcel.generic.FieldInstruction ins) private voidhandleInvoke(org.apache.bcel.generic.InvokeInstruction inv) 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 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
-
Constructor Details
-
ResourceValueFrameModelingVisitor
protected ResourceValueFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg)
-
-
Method Details
-
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 DataflowAnalysisException Subclasses must override this to model the effect of the given instruction on the current frame.- Throws:
DataflowAnalysisException
-
handleFieldStore
private void handleFieldStore(org.apache.bcel.generic.FieldInstruction ins) -
visitPUTFIELD
public void visitPUTFIELD(org.apache.bcel.generic.PUTFIELD putfield) - Specified by:
visitPUTFIELDin interfaceorg.apache.bcel.generic.Visitor- Overrides:
visitPUTFIELDin classAbstractFrameModelingVisitor<ResourceValue, ResourceValueFrame>
-
handleArrayStore
private void handleArrayStore(org.apache.bcel.generic.ArrayInstruction ins) -
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
-
handleInvoke
private void handleInvoke(org.apache.bcel.generic.InvokeInstruction inv) -
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>
-