Package edu.umd.cs.findbugs.detect
Class FindUnreleasedLock.LockFrameModelingVisitor
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
-
- edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
-
- edu.umd.cs.findbugs.detect.FindUnreleasedLock.LockFrameModelingVisitor
-
- All Implemented Interfaces:
org.apache.bcel.generic.Visitor
- Enclosing class:
- FindUnreleasedLock
private static class FindUnreleasedLock.LockFrameModelingVisitor extends ResourceValueFrameModelingVisitor
-
-
Field Summary
Fields Modifier and Type Field Description private Lock
lock
private FindUnreleasedLock.LockResourceTracker
resourceTracker
private ValueNumberDataflow
vnaDataflow
-
Fields inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
cpg
-
-
Constructor Summary
Constructors Constructor Description LockFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, FindUnreleasedLock.LockResourceTracker resourceTracker, Lock lock, ValueNumberDataflow vnaDataflow, IsNullValueDataflow isNullDataflow)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.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.-
Methods inherited from class edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
getDefaultValue, visitAASTORE, visitARETURN, visitCHECKCAST, visitINVOKEINTERFACE, visitINVOKESPECIAL, visitINVOKESTATIC, visitINVOKEVIRTUAL, visitPUTFIELD, visitPUTSTATIC
-
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
-
-
-
-
Field Detail
-
resourceTracker
private final FindUnreleasedLock.LockResourceTracker resourceTracker
-
lock
private final Lock lock
-
vnaDataflow
private final ValueNumberDataflow vnaDataflow
-
-
Constructor Detail
-
LockFrameModelingVisitor
public LockFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, FindUnreleasedLock.LockResourceTracker resourceTracker, Lock lock, ValueNumberDataflow vnaDataflow, IsNullValueDataflow isNullDataflow)
-
-
Method Detail
-
transferInstruction
public void transferInstruction(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock) throws DataflowAnalysisException
Description copied from class:ResourceValueFrameModelingVisitor
Subclasses must override this to model the effect of the given instruction on the current frame.- Specified by:
transferInstruction
in classResourceValueFrameModelingVisitor
- Throws:
DataflowAnalysisException
-
instanceEscapes
protected boolean instanceEscapes(org.apache.bcel.generic.InvokeInstruction inv, int instanceArgNum)
Description copied from class:ResourceValueFrameModelingVisitor
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.- Overrides:
instanceEscapes
in classResourceValueFrameModelingVisitor
- Parameters:
inv
- the InvokeInstruction to which the resource instance is passed as an argumentinstanceArgNum
- the first argument the instance is passed in
-
-