soot.toolkits.graph
Class ArrayRefBlockGraph

java.lang.Object
  extended by soot.toolkits.graph.BlockGraph
      extended by soot.toolkits.graph.ArrayRefBlockGraph
All Implemented Interfaces:
Iterable<Block>, DirectedGraph<Block>

public class ArrayRefBlockGraph
extends BlockGraph

A CFG where the nodes are Block instances, and where Units which include array references start new blocks. Exceptional control flow is ignored, so the graph will be a forest where each exception handler constitutes a disjoint subgraph.


Field Summary
 
Fields inherited from class soot.toolkits.graph.BlockGraph
mBlocks, mBody, mHeads, mTails, mUnits
 
Constructor Summary
ArrayRefBlockGraph(Body body)
          Constructs an ArrayRefBlockGraph from the given Body.
ArrayRefBlockGraph(BriefUnitGraph unitGraph)
          Constructs an ArrayRefBlockGraph corresponding to the Unit-level control flow represented by the passed BriefUnitGraph.
 
Method Summary
protected  Set<Unit> computeLeaders(UnitGraph unitGraph)
          Utility method for computing the basic block leaders for a Body, given its UnitGraph (i.e., the instructions which begin new basic blocks).
 
Methods inherited from class soot.toolkits.graph.BlockGraph
buildBlocks, getBlocks, getBody, getHeads, getPredsOf, getSuccsOf, getTails, iterator, size, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ArrayRefBlockGraph

public ArrayRefBlockGraph(Body body)

Constructs an ArrayRefBlockGraph from the given Body.

Note that this constructor builds a BriefUnitGraph internally when splitting body's Units into Blocks. Callers who need both a BriefUnitGraph and an ArrayRefBlockGraph should use the constructor taking the BriefUnitGraph as a parameter, as a minor optimization.

Parameters:
the - Body instance from which the graph is built.

ArrayRefBlockGraph

public ArrayRefBlockGraph(BriefUnitGraph unitGraph)
Constructs an ArrayRefBlockGraph corresponding to the Unit-level control flow represented by the passed BriefUnitGraph.

Parameters:
unitGraph - The BriefUnitGraph for which to build an ArrayRefBlockGraph.
Method Detail

computeLeaders

protected Set<Unit> computeLeaders(UnitGraph unitGraph)

Utility method for computing the basic block leaders for a Body, given its UnitGraph (i.e., the instructions which begin new basic blocks).

This implementation chooses as block leaders all the Units that BlockGraph.computerLeaders(), and adds:

Overrides:
computeLeaders in class BlockGraph
Parameters:
unitGraph - is the Unit-level CFG which is to be split into basic blocks.
Returns:
the Set of Units in unitGraph which are block leaders.