soot.toolkits.scalar
Class BranchedFlowAnalysis

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


unitToAfterBranchFlow

protected Map unitToAfterBranchFlow
Constructor Detail

BranchedFlowAnalysis

public BranchedFlowAnalysis(UnitGraph graph)
Method Detail

flowThrough

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


getFallFlowAfter

public Object getFallFlowAfter(Unit s)

getBranchFlowAfter

public List getBranchFlowAfter(Unit s)

getFlowBefore

public Object getFlowBefore(Unit s)