soot.jimple.toolkits.thread.mhp.findobject
Class MultiRunStatementsFinder

java.lang.Object
  extended by soot.toolkits.scalar.AbstractFlowAnalysis<N,A>
      extended by soot.toolkits.scalar.FlowAnalysis<N,A>
          extended by soot.toolkits.scalar.ForwardFlowAnalysis<Unit,BitSet>
              extended by soot.jimple.toolkits.thread.mhp.findobject.MultiRunStatementsFinder

public class MultiRunStatementsFinder
extends ForwardFlowAnalysis<Unit,BitSet>


Field Summary
protected  int lastIndex
           
protected  Map<Object,Integer> nodeToIndex
           
 
Fields inherited from class soot.toolkits.scalar.FlowAnalysis
filterUnitToAfterFlow, unitToAfterFlow
 
Fields inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
filterUnitToBeforeFlow, graph, unitToBeforeFlow
 
Constructor Summary
MultiRunStatementsFinder(UnitGraph g, SootMethod sm, Set<SootMethod> multiCalledMethods, CallGraph cg)
           
 
Method Summary
protected  void copy(BitSet source, BitSet dest)
          Creates a copy of the source flow object in dest.
protected  BitSet entryInitialFlow()
          Returns the initial flow value for entry/exit graph nodes.
protected  void flowThrough(BitSet in, Unit unit, BitSet out)
          Given the merge of the out sets, compute the in set for s (or in to out, depending on direction).
 FlowSet getMultiRunStatements()
           
protected  int indexOf(Object o)
           
protected  void merge(BitSet in1, BitSet in2, BitSet out)
          Compute the merge of the in1 and in2 sets, putting the result into out.
protected  BitSet newInitialFlow()
          Returns the flow object corresponding to the initial values for each graph node.
 
Methods inherited from class soot.toolkits.scalar.ForwardFlowAnalysis
constructWorklist, doAnalysis, isForward
 
Methods inherited from class soot.toolkits.scalar.FlowAnalysis
constructOrderer, getFlowAfter
 
Methods inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
getFlowBefore, merge, mergeInto, treatTrapHandlersAsEntries
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

nodeToIndex

protected Map<Object,Integer> nodeToIndex

lastIndex

protected int lastIndex
Constructor Detail

MultiRunStatementsFinder

public MultiRunStatementsFinder(UnitGraph g,
                                SootMethod sm,
                                Set<SootMethod> multiCalledMethods,
                                CallGraph cg)
Method Detail

merge

protected void merge(BitSet in1,
                     BitSet in2,
                     BitSet out)
Description copied from class: AbstractFlowAnalysis
Compute the merge of the in1 and in2 sets, putting the result into out. The behavior of this function depends on the implementation ( it may be necessary to check whether in1 and in2 are equal or aliased ). Used by the doAnalysis method.

Specified by:
merge in class AbstractFlowAnalysis<Unit,BitSet>

flowThrough

protected void flowThrough(BitSet in,
                           Unit unit,
                           BitSet out)
Description copied from class: FlowAnalysis
Given the merge of the 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).

Specified by:
flowThrough in class FlowAnalysis<Unit,BitSet>

copy

protected void copy(BitSet source,
                    BitSet dest)
Description copied from class: AbstractFlowAnalysis
Creates a copy of the source flow object in dest.

Specified by:
copy in class AbstractFlowAnalysis<Unit,BitSet>

entryInitialFlow

protected BitSet entryInitialFlow()
Description copied from class: AbstractFlowAnalysis
Returns the initial flow value for entry/exit graph nodes.

Specified by:
entryInitialFlow in class AbstractFlowAnalysis<Unit,BitSet>

newInitialFlow

protected BitSet newInitialFlow()
Description copied from class: AbstractFlowAnalysis
Returns the flow object corresponding to the initial values for each graph node.

Specified by:
newInitialFlow in class AbstractFlowAnalysis<Unit,BitSet>

getMultiRunStatements

public FlowSet getMultiRunStatements()

indexOf

protected int indexOf(Object o)