soot.toolkits.graph
Class ClassicCompleteBlockGraph

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

public class ClassicCompleteBlockGraph
extends BlockGraph

Represents a CFG where the nodes are Blocks and the edges are derived from control flow. Control flow associated with exceptions is taken into account: when a Unit may throw an exception that is caught by a Trap within the Body, the excepting Unit starts a new basic block.

ClassicCompleteBlockGraph approximates the results that would have been produced by Soot's CompleteBlockGraph in releases up to Soot 2.1.0. It is included solely for testing purposes, and should not be used in actual analyses. The approximation works not by duplicating the old CompleteBlockGraph's logic, but by using ClassicCompleteUnitGraph as the basis for dividing Units into Blocks.


Field Summary
 
Fields inherited from class soot.toolkits.graph.BlockGraph
mBlocks, mBody, mHeads, mTails, mUnits
 
Constructor Summary
ClassicCompleteBlockGraph(Body body)
           Constructs a ClassicCompleteBlockGraph for the blocks found by partitioning the the units of the provided Body instance into basic blocks.
ClassicCompleteBlockGraph(ClassicCompleteUnitGraph unitGraph)
          Constructs a graph for the blocks found by partitioning the the units in a ClassicCompleteUnitGraph.
 
Method Summary
 
Methods inherited from class soot.toolkits.graph.BlockGraph
buildBlocks, computeLeaders, 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

ClassicCompleteBlockGraph

public ClassicCompleteBlockGraph(Body body)

Constructs a ClassicCompleteBlockGraph for the blocks found by partitioning the the units of the provided Body instance into basic blocks.

Note that this constructor builds a ClassicCompleteUnitGraph internally when splitting body's Units into Blocks. Callers who already have a ClassicCompleteUnitGraph to hand can use the constructor taking a ClassicCompleteUnitGraph as a parameter, as a minor optimization.

Parameters:
body - The underlying body we want to make a graph for.

ClassicCompleteBlockGraph

public ClassicCompleteBlockGraph(ClassicCompleteUnitGraph unitGraph)
Constructs a graph for the blocks found by partitioning the the units in a ClassicCompleteUnitGraph.

Parameters:
unitGraph - A ClassicCompleteUnitGraph built from body. The CompleteBlockGraph constructor uses the passed graph to split the body into blocks.