public abstract class BasicAbstractDataflowAnalysis<Fact> extends java.lang.Object implements DataflowAnalysis<Fact>
Subclasses that model instructions within basic blocks should extend AbstractDataflowAnalysis.
Constructor and Description |
---|
BasicAbstractDataflowAnalysis()
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
edgeTransfer(Edge edge,
Fact fact)
Edge transfer function.
|
java.lang.String |
factToString(Fact fact)
Return a String representation of given Fact.
|
void |
finishIteration()
Called after finishing an iteration of analysis.
|
Fact |
getFactAfterLocation(Location location)
Get the dataflow fact representing the point just after given Location.
|
Fact |
getFactAtLocation(Location location)
Get dataflow fact at (just before) given Location.
|
Fact |
getFactOnEdge(Edge edge)
Get the fact that is true on the given control edge,
after applying the edge transfer function (if any).
|
int |
getLastUpdateTimestamp(Fact fact) |
Fact |
getResultFact(BasicBlock block)
Get the result fact for given basic block.
|
Fact |
getStartFact(BasicBlock block)
Get the start fact for given basic block.
|
java.util.Iterator<Fact> |
resultFactIterator()
Get an iterator over the result facts.
|
void |
setLastUpdateTimestamp(Fact fact,
int lastUpdateTimestamp) |
void |
startIteration()
Called before beginning an iteration of analysis.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
copy, createFact, getBlockOrder, initEntryFact, isForwards, isTop, makeFactTop, meetInto, same, transfer
public BasicAbstractDataflowAnalysis()
public java.util.Iterator<Fact> resultFactIterator()
public java.lang.String factToString(Fact fact)
DataflowAnalysis
factToString
in interface DataflowAnalysis<Fact>
fact
- a dataflow factpublic Fact getStartFact(BasicBlock block)
DataflowAnalysis
getStartFact
in interface DataflowAnalysis<Fact>
block
- the basic blockpublic Fact getResultFact(BasicBlock block)
DataflowAnalysis
getResultFact
in interface DataflowAnalysis<Fact>
block
- the basic blockpublic Fact getFactAtLocation(Location location) throws DataflowAnalysisException
The default implementation ignores instructions within basic blocks. Subclasses that model individual instructions must override this method.
getFactAtLocation
in interface DataflowAnalysis<Fact>
location
- the LocationDataflowAnalysisException
public Fact getFactAfterLocation(Location location) throws DataflowAnalysisException
The default implementation ignores instructions within basic blocks. Subclasses that model individual instructions must override this method.
getFactAfterLocation
in interface DataflowAnalysis<Fact>
location
- the LocationDataflowAnalysisException
public Fact getFactOnEdge(Edge edge) throws DataflowAnalysisException
getFactOnEdge
in interface DataflowAnalysis<Fact>
edge
- the edgeDataflowAnalysisException
public void startIteration()
DataflowAnalysis
startIteration
in interface DataflowAnalysis<Fact>
public void finishIteration()
DataflowAnalysis
finishIteration
in interface DataflowAnalysis<Fact>
public void edgeTransfer(Edge edge, Fact fact) throws DataflowAnalysisException
DataflowAnalysis
A do-nothing implementation is legal, and appropriate for analyses where branches are not significant.
edgeTransfer
in interface DataflowAnalysis<Fact>
edge
- the Edgefact
- a dataflow factDataflowAnalysisException
public int getLastUpdateTimestamp(Fact fact)
getLastUpdateTimestamp
in interface DataflowAnalysis<Fact>
public void setLastUpdateTimestamp(Fact fact, int lastUpdateTimestamp)
setLastUpdateTimestamp
in interface DataflowAnalysis<Fact>
FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.