public class ArrayRefBlockGraph extends BlockGraph
Constructor and Description |
---|
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 . |
Modifier and Type | Method and Description |
---|---|
protected java.util.Set<Unit> |
computeLeaders(UnitGraph unitGraph)
|
buildBlocks, getBlocks, getBody, getHeads, getPredsOf, getSuccsOf, getTails, iterator, size, toString
public ArrayRefBlockGraph(Body body)
Constructs an ArrayRefBlockGraph
from the given
Body
.
Note that this constructor builds a BriefUnitGraph
internally when splitting body's
Unit
s into Block
s. Callers who need both a
BriefUnitGraph
and an ArrayRefBlockGraph
should use the constructor taking the BriefUnitGraph as a
parameter, as a minor optimization.
the
- Body instance from which the graph is built.public ArrayRefBlockGraph(BriefUnitGraph unitGraph)
BriefUnitGraph
.unitGraph
- The BriefUnitGraph for which
to build an ArrayRefBlockGraph.protected java.util.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:
Stmt.containsArrayRef()
and
Inst.containsArrayRef()
.
Trap
(i.e.,
the Unit returned by Trap.getLastUnit()
.computeLeaders
in class BlockGraph
unitGraph
- is the Unit-level CFG which is to be split
into basic blocks.Set
of Unit
s in unitGraph which
are block leaders.