public abstract class FlowAnalysis<N,A> extends AbstractFlowAnalysis<N,A>
Modifier and Type | Class and Description |
---|---|
static class |
FlowAnalysis.Flow |
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<N,A> |
filterUnitToAfterFlow
Filtered: Maps graph nodes to OUT sets.
|
protected java.util.Map<N,A> |
unitToAfterFlow
Maps graph nodes to OUT sets.
|
filterUnitToBeforeFlow, graph, unitToBeforeFlow
Constructor and Description |
---|
FlowAnalysis(DirectedGraph<N> graph)
Constructs a flow analysis on the given
DirectedGraph . |
Modifier and Type | Method and Description |
---|---|
protected abstract void |
flowThrough(A in,
N d,
A out)
Given the merge of the
out sets, compute the in
set for s (or in to out, depending on direction). |
protected FlowAnalysis.Flow |
getFlow(N from,
N mergeNode)
You can specify which flow set you would like to use of node
from |
A |
getFlowAfter(N s)
Accessor function returning value of OUT set for s.
|
A |
getFlowBefore(N s)
Accessor function returning value of IN set for s.
|
protected boolean |
omissible(N n)
If a flow node can be omitted return
true , otherwise
false . |
copy, doAnalysis, entryInitialFlow, isForward, merge, merge, mergeInto, newInitialFlow, treatTrapHandlersAsEntries
public FlowAnalysis(DirectedGraph<N> graph)
DirectedGraph
.protected abstract void flowThrough(A in, N d, A out)
out
sets, compute the in
set for s
(or in to out, depending on direction).
This function often causes confusion, because the same interface is used
for both forward and backward flow analyses. The first parameter is
always the argument to the flow function (i.e. it is the "in" set in a
forward analysis and the "out" set in a backward analysis), and the third
parameter is always the result of the flow function (i.e. it is the "out"
set in a forward analysis and the "in" set in a backward analysis).in
- the input flowd
- the current nodeout
- the returned flowpublic A getFlowBefore(N s)
AbstractFlowAnalysis
getFlowBefore
in class AbstractFlowAnalysis<N,A>
protected boolean omissible(N n)
true
, otherwise
false
. There is no guarantee a node will be omitted. A
omissible node does not influence the result of an analysis.
If you are unsure, don't overwrite this methodn
- the node to checkfalse
protected FlowAnalysis.Flow getFlow(N from, N mergeNode)
from
from
- mergeNode
-