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
- 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
ConstructorDescriptionResourceValueFrameModelingVisitor
(org.apache.bcel.generic.ConstantPoolGen cpg) -
Method Summary
Modifier and TypeMethodDescriptionProduce a "default" value.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.abstract void
transferInstruction
(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock) Subclasses must override this to model the effect of the given instruction on the current frame.void
visitAASTORE
(org.apache.bcel.generic.AASTORE arr) void
visitARETURN
(org.apache.bcel.generic.ARETURN ins) void
visitCHECKCAST
(org.apache.bcel.generic.CHECKCAST obj) void
visitINVOKEINTERFACE
(org.apache.bcel.generic.INVOKEINTERFACE inv) void
visitINVOKESPECIAL
(org.apache.bcel.generic.INVOKESPECIAL inv) void
visitINVOKESTATIC
(org.apache.bcel.generic.INVOKESTATIC inv) void
visitINVOKEVIRTUAL
(org.apache.bcel.generic.INVOKEVIRTUAL inv) void
visitPUTFIELD
(org.apache.bcel.generic.PUTFIELD putfield) void
visitPUTSTATIC
(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
-
Constructor Details
-
ResourceValueFrameModelingVisitor
public ResourceValueFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg)
-
-
Method Details
-
getDefaultValue
Description copied from class:AbstractFrameModelingVisitor
Produce a "default" value. This is what is pushed onto the stack by the handleNormalInstruction() method for instructions which produce stack values.- Specified by:
getDefaultValue
in 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
-
visitPUTFIELD
public void visitPUTFIELD(org.apache.bcel.generic.PUTFIELD putfield) - Specified by:
visitPUTFIELD
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitPUTFIELD
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitAASTORE
public void visitAASTORE(org.apache.bcel.generic.AASTORE arr) - Specified by:
visitAASTORE
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitAASTORE
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitPUTSTATIC
public void visitPUTSTATIC(org.apache.bcel.generic.PUTSTATIC putstatic) - Specified by:
visitPUTSTATIC
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitPUTSTATIC
in 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:
visitCHECKCAST
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitCHECKCAST
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitINVOKEVIRTUAL
public void visitINVOKEVIRTUAL(org.apache.bcel.generic.INVOKEVIRTUAL inv) - Specified by:
visitINVOKEVIRTUAL
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitINVOKEVIRTUAL
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitINVOKEINTERFACE
public void visitINVOKEINTERFACE(org.apache.bcel.generic.INVOKEINTERFACE inv) - Specified by:
visitINVOKEINTERFACE
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitINVOKEINTERFACE
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitINVOKESPECIAL
public void visitINVOKESPECIAL(org.apache.bcel.generic.INVOKESPECIAL inv) - Specified by:
visitINVOKESPECIAL
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitINVOKESPECIAL
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitINVOKESTATIC
public void visitINVOKESTATIC(org.apache.bcel.generic.INVOKESTATIC inv) - Specified by:
visitINVOKESTATIC
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitINVOKESTATIC
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-
visitARETURN
public void visitARETURN(org.apache.bcel.generic.ARETURN ins) - Specified by:
visitARETURN
in interfaceorg.apache.bcel.generic.Visitor
- Overrides:
visitARETURN
in classAbstractFrameModelingVisitor<ResourceValue,
ResourceValueFrame>
-