edu.umd.cs.findbugs.ba
Class Dataflow<Fact,AnalysisType extends DataflowAnalysis<Fact>>

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.Dataflow<Fact,AnalysisType>
Direct Known Subclasses:
AbstractDataflow, CallListDataflow, ConstantDataflow, IsNullValueDataflow, LiveLocalStoreDataflow, LockDataflow, ReturnPathDataflow, TypeDataflow, ValueNumberDataflow

public class Dataflow<Fact,AnalysisType extends DataflowAnalysis<Fact>>
extends java.lang.Object

Perform dataflow analysis on a method using a control flow graph. Both forward and backward analyses can be performed.

The analysis's transfer function is applied to transform the meet of the results of the block's logical predecessors (the block's start facts) into the block's result facts.

Author:
David Hovemeyer
See Also:
CFG, DataflowAnalysis

Constructor Summary
Dataflow(CFG cfg, AnalysisType analysis)
          Constructor.
 
Method Summary
 void execute()
          Run the algorithm.
 AnalysisType getAnalysis()
          Get the analysis object.
 CFG getCFG()
          Get the CFG object.
 int getNumIterations()
          Return the number of iterations of the main execution loop.
 Fact getResultFact(BasicBlock block)
          Get dataflow facts for end of given block.
 Fact getStartFact(BasicBlock block)
          Get dataflow facts for start of given block.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Dataflow

public Dataflow(CFG cfg,
                AnalysisType analysis)
Constructor.

Parameters:
cfg - the control flow graph
analysis - the DataflowAnalysis to be run
Method Detail

execute

public void execute()
             throws DataflowAnalysisException
Run the algorithm. Afterwards, caller can use the getStartFact() and getResultFact() methods to to get dataflow facts at start and result points of each block.

Throws:
DataflowAnalysisException

getNumIterations

public int getNumIterations()
Return the number of iterations of the main execution loop.


getStartFact

public Fact getStartFact(BasicBlock block)
Get dataflow facts for start of given block.


getResultFact

public Fact getResultFact(BasicBlock block)
Get dataflow facts for end of given block.


getAnalysis

public AnalysisType getAnalysis()
Get the analysis object.


getCFG

public CFG getCFG()
Get the CFG object.