soot.toolkits.scalar
Class BranchedFlowAnalysis

java.lang.Object
  |
  +--soot.toolkits.scalar.AbstractFlowAnalysis
        |
        +--soot.toolkits.scalar.BranchedFlowAnalysis
Direct Known Subclasses:
ForwardBranchedFlowAnalysis

public abstract class BranchedFlowAnalysis
extends AbstractFlowAnalysis

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 Summary
protected  java.util.Map unitToAfterBranchFlow
           
protected  java.util.Map unitToAfterFallFlow
          Maps graph nodes to OUT sets.
 
Fields inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
graph, unitToBeforeFlow
 
Constructor Summary
BranchedFlowAnalysis(UnitGraph graph)
           
 
Method Summary
protected abstract  void flowThrough(java.lang.Object in, Unit s, java.util.List fallOut, java.util.List branchOuts)
          Given the merge of the in sets, compute the fallOut and branchOuts set for s.
 java.util.List getBranchFlowAfter(Unit s)
           
 java.lang.Object getFallFlowAfter(Unit s)
           
 java.lang.Object getFlowBefore(Unit s)
           
 
Methods inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
copy, customizeInitialFlowGraph, doAnalysis, entryInitialFlow, getFlowBefore, isForward, merge, newInitialFlow, treatTrapHandlersAsEntries
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

unitToAfterFallFlow

protected java.util.Map unitToAfterFallFlow
Maps graph nodes to OUT sets.

unitToAfterBranchFlow

protected java.util.Map unitToAfterBranchFlow
Constructor Detail

BranchedFlowAnalysis

public BranchedFlowAnalysis(UnitGraph graph)
Method Detail

flowThrough

protected abstract void flowThrough(java.lang.Object in,
                                    Unit s,
                                    java.util.List fallOut,
                                    java.util.List branchOuts)
Given the merge of the in sets, compute the fallOut and branchOuts set for s.

getFallFlowAfter

public java.lang.Object getFallFlowAfter(Unit s)

getBranchFlowAfter

public java.util.List getBranchFlowAfter(Unit s)

getFlowBefore

public java.lang.Object getFlowBefore(Unit s)