Class BranchedFlowAnalysis<N extends Unit,​A>

  • Direct Known Subclasses:
    ForwardBranchedFlowAnalysis

    public abstract class BranchedFlowAnalysis<N extends Unit,​A>
    extends AbstractFlowAnalysis<N,​A>
    Abstract class providing functionality for branched flow analysis. A branched flow analysis is one which can propagate different information to the successors of a node. This is useful for propagating information past a statement like if(x > 0): one successor has x > 0 while the other successor has x ≤ 0.
    • Field Detail

      • unitToAfterFallFlow

        protected final Map<Unit,​List<A>> unitToAfterFallFlow
        Maps graph nodes to OUT sets.
      • unitToAfterBranchFlow

        protected final Map<Unit,​List<A>> unitToAfterBranchFlow
    • Constructor Detail

      • BranchedFlowAnalysis

        public BranchedFlowAnalysis​(DirectedGraph<N> graph)
    • Method Detail

      • flowThrough

        protected abstract void flowThrough​(A in,
                                            Unit s,
                                            List<A> fallOut,
                                            List<A> branchOuts)
        Given the merge of the in sets, compute the fallOut and branchOuts set for s.
      • getFallFlowAfter

        public A getFallFlowAfter​(Unit s)
      • getBranchFlowAfter

        public List<A> getBranchFlowAfter​(Unit s)