edu.umd.cs.findbugs.ba
public interface DataflowAnalysis<Fact>
Method Summary | |
---|---|
void | copy(Fact source, Fact dest)
Copy dataflow facts. |
Fact | createFact()
Create empty (uninitialized) dataflow facts for one program point.
|
void | edgeTransfer(Edge edge, Fact fact)
Edge transfer function.
|
void | finishIteration()
Called after finishing an iteration of analysis. |
BlockOrder | getBlockOrder(CFG cfg)
Return the BlockOrder specifying the order in which BasicBlocks
should be visited in the main dataflow loop.
|
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.
|
void | initEntryFact(Fact result)
Initialize the "entry" fact for the graph. |
void | initResultFact(Fact result)
Initialize result fact for block.
|
boolean | isForwards()
Returns true if the analysis is forwards, false if backwards. |
boolean | isTop(Fact fact)
Is the given fact the top value. |
void | makeFactTop(Fact fact)
Make given fact the top value. |
void | meetInto(Fact fact, Edge edge, Fact result)
Meet a dataflow fact associated with an incoming edge into another fact.
|
boolean | same(Fact fact1, Fact fact2)
Are given dataflow facts the same? |
void | setLastUpdateTimestamp(Fact fact, int timestamp) |
void | startIteration()
Called before beginning an iteration of analysis.
|
void | transfer(BasicBlock basicBlock, InstructionHandle end, Fact start, Fact result)
Transfer function for the analysis.
|
A do-nothing implementation is legal, and appropriate for analyses where branches are not significant.
Parameters: edge the Edge fact a dataflow fact
Throws: DataflowAnalysisException
Parameters: cfg the CFG upon which we're performing dataflow analysis
Parameters: block the basic block
Parameters: block the basic block
Parameters: fact the predecessor fact (incoming edge) edge the edge from the predecessor result the result fact
Parameters: basicBlock the basic block end if nonnull, stop before considering this instruction; otherwise, consider all of the instructions in the basic block start dataflow facts at beginning of block (if forward analysis) or end of block (if backwards analysis) result resulting dataflow facts at other end of block