edu.umd.cs.findbugs.detect
Class FindUnreleasedLock.LockFrameModelingVisitor

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor<ResourceValue,ResourceValueFrame>
      extended by edu.umd.cs.findbugs.ba.ResourceValueFrameModelingVisitor
          extended by 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
private  Lock lock
           
private  FindUnreleasedLock.LockResourceTracker resourceTracker
           
private  ValueNumberDataflow vnaDataflow
           
 
Constructor Summary
FindUnreleasedLock.LockFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg, FindUnreleasedLock.LockResourceTracker resourceTracker, Lock lock, ValueNumberDataflow vnaDataflow)
           
 
Method Summary
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, visitARETURN, visitINVOKEINTERFACE, visitINVOKESPECIAL, visitINVOKESTATIC, visitINVOKEVIRTUAL, visitPUTFIELD, visitPUTSTATIC
 
Methods inherited from class edu.umd.cs.findbugs.ba.AbstractFrameModelingVisitor
getCPG, getFrame, getNumWordsConsumed, getNumWordsProduced, handleLoadInstruction, handleNormalInstruction, handleStoreInstruction, modelNormalInstruction, setFrame, visitAALOAD, visitAASTORE, visitACONST_NULL, visitAllocationInstruction, visitALOAD, visitANEWARRAY, visitArithmeticInstruction, visitArrayInstruction, visitARRAYLENGTH, visitASTORE, visitATHROW, visitBALOAD, visitBASTORE, visitBIPUSH, visitBranchInstruction, visitBREAKPOINT, visitCALOAD, visitCASTORE, visitCHECKCAST, visitConstantPushInstruction, visitConversionInstruction, visitCPInstruction, visitD2F, visitD2I, visitD2L, visitDADD, visitDALOAD, visitDASTORE, visitDCMPG, visitDCMPL, visitDCONST, visitDDIV, visitDLOAD, visitDMUL, visitDNEG, visitDREM, visitDRETURN, visitDSTORE, visitDSUB, visitDUP_X1, visitDUP_X2, visitDUP, visitDUP2_X1, visitDUP2_X2, visitDUP2, visitExceptionThrower, visitF2D, visitF2I, visitF2L, visitFADD, visitFALOAD, visitFASTORE, visitFCMPG, visitFCMPL, visitFCONST, visitFDIV, visitFieldInstruction, visitFieldOrMethod, visitFLOAD, visitFMUL, visitFNEG, visitFREM, visitFRETURN, visitFSTORE, visitFSUB, visitGETFIELD, visitGETSTATIC, visitGOTO_W, visitGOTO, 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, visitInvokeInstruction, visitIOR, visitIREM, visitIRETURN, visitISHL, visitISHR, visitISTORE, visitISUB, visitIUSHR, visitIXOR, visitJSR_W, visitJSR, 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, visitNOP, visitPOP, visitPOP2, visitPopInstruction, visitPushInstruction, visitRET, visitRETURN, visitReturnInstruction, visitSALOAD, visitSASTORE, visitSelect, visitSIPUSH, 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

resourceTracker

private FindUnreleasedLock.LockResourceTracker resourceTracker

lock

private Lock lock

vnaDataflow

private ValueNumberDataflow vnaDataflow
Constructor Detail

FindUnreleasedLock.LockFrameModelingVisitor

public FindUnreleasedLock.LockFrameModelingVisitor(org.apache.bcel.generic.ConstantPoolGen cpg,
                                                   FindUnreleasedLock.LockResourceTracker resourceTracker,
                                                   Lock lock,
                                                   ValueNumberDataflow vnaDataflow)
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 class ResourceValueFrameModelingVisitor
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 class ResourceValueFrameModelingVisitor
Parameters:
inv - the InvokeInstruction to which the resource instance is passed as an argument
instanceArgNum - the first argument the instance is passed in