abstract static class DataFlowAnalysis.BranchedForwardDataFlowAnalysis<N,L extends LatticeElement> extends DataFlowAnalysis<N,L>
DataFlowAnalysis.BranchedFlowState<L extends LatticeElement>, DataFlowAnalysis.BranchedForwardDataFlowAnalysis<N,L extends LatticeElement>, DataFlowAnalysis.FlowState<L extends LatticeElement>, DataFlowAnalysis.MaxIterationsExceededException
joinOp, MAX_STEPS, orderedWorkSet
Constructor and Description |
---|
BranchedForwardDataFlowAnalysis(ControlFlowGraph<N> targetCfg,
JoinOp<L> joinOp) |
Modifier and Type | Method and Description |
---|---|
(package private) abstract java.util.List<L> |
branchedFlowThrough(N node,
L input)
The branched flow function maps a single lattice to a list of output
lattices.
|
protected boolean |
flow(DiGraph.DiGraphNode<N,ControlFlowGraph.Branch> node)
Performs a single flow through a node.
|
(package private) L |
getExitLatticeElement()
Returns the lattice element at the exit point.
|
protected void |
initialize()
Initializes the work list and the control flow graph.
|
(package private) boolean |
isForward()
Checks whether the analysis is a forward flow analysis or backward flow
analysis.
|
protected void |
joinInputs(DiGraph.DiGraphNode<N,ControlFlowGraph.Branch> node)
Computes the new flow state at a given node's entry by merging the
output (input) lattice of the node's predecessor (successor).
|
analyze, analyze, computeEscaped, createEntryLattice, createInitialEstimateLattice, flowThrough, getCfg, join
BranchedForwardDataFlowAnalysis(ControlFlowGraph<N> targetCfg, JoinOp<L> joinOp)
protected void initialize()
DataFlowAnalysis
initialize
in class DataFlowAnalysis<N,L extends LatticeElement>
L getExitLatticeElement()
getExitLatticeElement
in class DataFlowAnalysis<N,L extends LatticeElement>
final boolean isForward()
DataFlowAnalysis
isForward
in class DataFlowAnalysis<N,L extends LatticeElement>
true
if it is a forward analysis.abstract java.util.List<L> branchedFlowThrough(N node, L input)
Each outgoing edge of a node will have a corresponding output lattice
in the ordered returned by
DiGraph.getOutEdges(Object)
in the returned list.
protected final boolean flow(DiGraph.DiGraphNode<N,ControlFlowGraph.Branch> node)
DataFlowAnalysis
flow
in class DataFlowAnalysis<N,L extends LatticeElement>
true
if the flow state differs from the previous state.protected void joinInputs(DiGraph.DiGraphNode<N,ControlFlowGraph.Branch> node)
DataFlowAnalysis
joinInputs
in class DataFlowAnalysis<N,L extends LatticeElement>
node
- Node to compute new join.