com.ibm.wala.ipa.slicer
Class SDG

java.lang.Object
  extended by com.ibm.wala.util.graph.AbstractGraph<T>
      extended by com.ibm.wala.util.graph.AbstractNumberedGraph<Statement>
          extended by com.ibm.wala.ipa.slicer.SDG
All Implemented Interfaces:
ISDG, EdgeManager<Statement>, Graph<Statement>, NodeManager<Statement>, NumberedEdgeManager<Statement>, NumberedGraph<Statement>, NumberedNodeManager<Statement>, java.lang.Iterable<Statement>

public class SDG
extends AbstractNumberedGraph<Statement>
implements ISDG

System dependence graph. An SDG comprises a set of PDGs, one for each method. We compute these lazily. Prototype implementation. Not efficient.


Constructor Summary
SDG(CallGraph cg, PointerAnalysis pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions)
           
SDG(CallGraph cg, PointerAnalysis pa, Slicer.DataDependenceOptions dOptions, Slicer.ControlDependenceOptions cOptions, HeapExclusions heapExclude)
           
 
Method Summary
 Slicer.ControlDependenceOptions getCOptions()
           
protected  EdgeManager<Statement> getEdgeManager()
           
protected  NodeManager<Statement> getNodeManager()
           
 PDG getPDG(CGNode node)
           
 java.util.Iterator<? extends Statement> iterateLazyNodes()
          iterate over the nodes without constructing any new ones.
 java.lang.String toString()
           
 
Methods inherited from class com.ibm.wala.util.graph.AbstractNumberedGraph
getMaxNumber, getNode, getNumber, getPredNodeNumbers, getSuccNodeNumbers, iterateNodes
 
Methods inherited from class com.ibm.wala.util.graph.AbstractGraph
addEdge, addNode, containsNode, getNumberOfNodes, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, iterator, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeNode, removeNodeAndEdges, removeOutgoingEdges
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.ibm.wala.util.graph.Graph
removeNodeAndEdges
 
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, containsNode, getNumberOfNodes, iterator, removeNode
 
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
 
Methods inherited from interface com.ibm.wala.util.graph.NumberedNodeManager
getMaxNumber, getNode, getNumber, iterateNodes
 
Methods inherited from interface com.ibm.wala.util.graph.NodeManager
addNode, containsNode, getNumberOfNodes, iterator, removeNode
 
Methods inherited from interface com.ibm.wala.util.graph.NumberedEdgeManager
getPredNodeNumbers, getSuccNodeNumbers
 
Methods inherited from interface com.ibm.wala.util.graph.EdgeManager
addEdge, getPredNodeCount, getPredNodes, getSuccNodeCount, getSuccNodes, hasEdge, removeAllIncidentEdges, removeEdge, removeIncomingEdges, removeOutgoingEdges
 

Constructor Detail

SDG

public SDG(CallGraph cg,
           PointerAnalysis pa,
           Slicer.DataDependenceOptions dOptions,
           Slicer.ControlDependenceOptions cOptions)

SDG

public SDG(CallGraph cg,
           PointerAnalysis pa,
           Slicer.DataDependenceOptions dOptions,
           Slicer.ControlDependenceOptions cOptions,
           HeapExclusions heapExclude)
    throws java.lang.IllegalArgumentException
Throws:
java.lang.IllegalArgumentException
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class AbstractGraph<Statement>

iterateLazyNodes

public java.util.Iterator<? extends Statement> iterateLazyNodes()
iterate over the nodes without constructing any new ones. Use with extreme care. May break graph traversals that lazily add more nodes.

Specified by:
iterateLazyNodes in interface ISDG

getEdgeManager

protected EdgeManager<Statement> getEdgeManager()
Specified by:
getEdgeManager in class AbstractGraph<Statement>
Returns:
the object which manages edges in the graph

getNodeManager

protected NodeManager<Statement> getNodeManager()
Specified by:
getNodeManager in class AbstractGraph<Statement>
Returns:
the object which manages nodes in the graph

getPDG

public PDG getPDG(CGNode node)
Specified by:
getPDG in interface ISDG

getCOptions

public Slicer.ControlDependenceOptions getCOptions()
Specified by:
getCOptions in interface ISDG