Package soot.toolkits.graph
Class ZonedBlockGraph
- java.lang.Object
-
- soot.toolkits.graph.BlockGraph
-
- soot.toolkits.graph.ZonedBlockGraph
-
- All Implemented Interfaces:
Iterable<Block>,DirectedBodyGraph<Block>,DirectedGraph<Block>
public class ZonedBlockGraph extends BlockGraph
A CFG where the nodes areBlockinstances, and where exception boundaries are taken into account when finding the Blocks for the provided Body. AnyUnitwhich is the first Unit to be convered by some exception handler will start a new Block, and any Unit which is the last Unit to be covered a some exception handler, will end the block it is part of. These ``zones'', however, are not split up to indicate the possibility that an exception will lead to control exiting the zone before it is completed.
-
-
Constructor Summary
Constructors Constructor Description ZonedBlockGraph(Body body)Constructs a ZonedBlockGraph for the Units comprising the passedBody.ZonedBlockGraph(BriefUnitGraph unitGraph)Constructs a ZonedBlockGraph corresponding to the Unit-level control flow represented by the passedBriefUnitGraph.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Set<Unit>computeLeaders(UnitGraph unitGraph)-
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
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
ZonedBlockGraph
public ZonedBlockGraph(Body body)
Constructs a ZonedBlockGraph for the Units comprising the passed
Body.Note that this constructor builds a
BriefUnitGraphinternally when splitting body'sUnits intoBlocks. Callers who need both aBriefUnitGraphand aZonedBlockGraphcan use the constructor taking the BriefUnitGraph as a parameter, as a minor optimization.- Parameters:
body- The Body for which to produce a ZonedBlockGraph.
-
ZonedBlockGraph
public ZonedBlockGraph(BriefUnitGraph unitGraph)
Constructs a ZonedBlockGraph corresponding to the Unit-level control flow represented by the passedBriefUnitGraph.- Parameters:
unitGraph- The BriefUnitGraph for which to produce a ZonedBlockGraph.
-
-
Method Detail
-
computeLeaders
protected Set<Unit> computeLeaders(UnitGraph unitGraph)
Utility method for computing the basic block leaders for a
Body, given itsUnitGraph(i.e., the instructions which begin new basic blocks).This implementation chooses as block leaders all the Units that {@link BlockGraph.computerLeaders()}, and adds:
- Overrides:
computeLeadersin classBlockGraph- Parameters:
unitGraph- is the Unit-level CFG which is to be split into basic blocks.- Returns:
- the
SetofUnits in unitGraph which are block leaders.
-
-