|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object soot.toolkits.graph.UnitGraph
public abstract class UnitGraph
Represents a CFG where the nodes are Unit
instances and
edges represent unexceptional and (possibly) exceptional control
flow between Units.
This is an abstract class, providing the facilities used to build CFGs for specific purposes.
Field Summary | |
---|---|
protected Body |
body
|
protected List<Unit> |
heads
|
protected SootMethod |
method
|
protected List<Unit> |
tails
|
protected Chain<Unit> |
unitChain
|
protected Map<Unit,List<Unit>> |
unitToPreds
|
protected Map<Unit,List<Unit>> |
unitToSuccs
|
Constructor Summary | |
---|---|
protected |
UnitGraph(Body body)
Performs the work that is required to construct any sort of UnitGraph. |
Method Summary | |
---|---|
protected void |
addEdge(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds,
Unit head,
Unit tail)
Utility method for adding an edge to maps representing the CFG. |
protected void |
buildHeadsAndTails()
Utility method used in the construction of UnitGraph s, to be
called only after the unitToPreds and unitToSuccs maps have
been built. |
protected void |
buildUnexceptionalEdges(Map<Unit,List<Unit>> unitToSuccs,
Map<Unit,List<Unit>> unitToPreds)
Utility method for UnitGraph constructors. |
protected Map<Unit,List<Unit>> |
combineMapValues(Map<Unit,List<Unit>> mapA,
Map<Unit,List<Unit>> mapB)
Utility method that produces a new map from the Unit s
of this graph's body to the union of the values stored in the
two argument Map s, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. |
Body |
getBody()
|
List<Unit> |
getExtendedBasicBlockPathBetween(Unit from,
Unit to)
Look for a path in graph, from def to use. |
List<Unit> |
getHeads()
Returns a list of entry points for this graph. |
List<Unit> |
getPredsOf(Unit u)
Returns a list of predecessors for the given node in the graph. |
List<Unit> |
getSuccsOf(Unit u)
Returns a list of successors for the given node in the graph. |
List<Unit> |
getTails()
Returns a list of exit points for this graph. |
Iterator<Unit> |
iterator()
Returns an iterator for the nodes in this graph. |
protected static void |
makeMappedListsUnmodifiable(Map<?,List<Unit>> map)
Utility method that replaces the values of a Map ,
which must be instances of List , with unmodifiable
equivalents. |
int |
size()
Returns the node count for this graph. |
String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected List<Unit> heads
protected List<Unit> tails
protected Map<Unit,List<Unit>> unitToSuccs
protected Map<Unit,List<Unit>> unitToPreds
protected SootMethod method
protected Body body
protected Chain<Unit> unitChain
Constructor Detail |
---|
protected UnitGraph(Body body)
body
- The body of the method for which to construct a
control flow graph.Method Detail |
---|
protected void buildUnexceptionalEdges(Map<Unit,List<Unit>> unitToSuccs, Map<Unit,List<Unit>> unitToPreds)
unitToSuccs
- A Map
from Unit
s to
List
s of Unit
s. This is
an ``out parameter''; callers must pass an empty
Map
. buildUnexceptionalEdges will
add a mapping for every Unit in the
body to a list of its unexceptional successors.unitToPreds
- A Map
from Unit
s to
List
s of Unit
s. This is an
``out parameter''; callers must pass an empty
Map
. buildUnexceptionalEdges will
add a mapping for every Unit in the body
to a list of its unexceptional predecessors.protected void buildHeadsAndTails()
Utility method used in the construction of UnitGraph
s, to be
called only after the unitToPreds and unitToSuccs maps have
been built.
UnitGraph
provides an implementation of
buildHeadsAndTails()
which defines the graph's set
of heads to include the first Unit
in the graph's body,
together with any other Unit which has no predecessors.
It defines the graph's set of tails to include all
Units with no successors. Subclasses of
UnitGraph
may override this method to change the
criteria for classifying a node as a head or tail.
protected static void makeMappedListsUnmodifiable(Map<?,List<Unit>> map)
Map
,
which must be instances of List
, with unmodifiable
equivalents.
map
- The map whose values are to be made unmodifiable.protected Map<Unit,List<Unit>> combineMapValues(Map<Unit,List<Unit>> mapA, Map<Unit,List<Unit>> mapB)
Unit
s
of this graph's body to the union of the values stored in the
two argument Map
s, used to combine the maps of
exceptional and unexceptional predecessors and successors into
maps of all predecessors and successors. The values stored in
both argument maps must be List
s of Unit
s,
which are assumed not to contain any duplicate Units.
mapA
- The first map to be combined.mapB
- The second map to be combined.protected void addEdge(Map<Unit,List<Unit>> unitToSuccs, Map<Unit,List<Unit>> unitToPreds, Unit head, Unit tail)
unitToSuccs
- The Map
from Unit
s to List
s
of their successors.unitToPreds
- The Map
from Unit
s to List
s
of their successors.head
- The Unit
from which the edge starts.tail
- The Unit
to which the edge flows.public Body getBody()
Body
public List<Unit> getExtendedBasicBlockPathBetween(Unit from, Unit to)
from
- start point for the path.to
- end point for the path.
public List<Unit> getHeads()
DirectedGraph
getHeads
in interface DirectedGraph<Unit>
public List<Unit> getTails()
DirectedGraph
getTails
in interface DirectedGraph<Unit>
public List<Unit> getPredsOf(Unit u)
DirectedGraph
getPredsOf
in interface DirectedGraph<Unit>
public List<Unit> getSuccsOf(Unit u)
DirectedGraph
getSuccsOf
in interface DirectedGraph<Unit>
public int size()
DirectedGraph
size
in interface DirectedGraph<Unit>
public Iterator<Unit> iterator()
DirectedGraph
iterator
in interface Iterable<Unit>
iterator
in interface DirectedGraph<Unit>
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |