com.ibm.wala.analysis.pointers
Class HeapGraph

java.lang.Object
  extended by com.ibm.wala.analysis.pointers.HeapGraph
All Implemented Interfaces:
EdgeManager<java.lang.Object>, Graph<java.lang.Object>, NodeManager<java.lang.Object>, NumberedEdgeManager<java.lang.Object>, NumberedGraph<java.lang.Object>, NumberedNodeManager<java.lang.Object>, java.lang.Iterable<java.lang.Object>
Direct Known Subclasses:
BasicHeapGraph

public abstract class HeapGraph
extends java.lang.Object
implements NumberedGraph<java.lang.Object>

A Graph view of a pointer analysis solution. Nodes in the Graph are PointerKeys and InstanceKeys. There is an edge from a PointerKey P to an InstanceKey I iff the PointerAnalysis indicates that P may point to I. There is an edge from an InstanceKey I to a PointerKey P iff - P represents a field of an object instance modelled by I, or - P represents the array contents of array instance I.


Constructor Summary
protected HeapGraph(HeapModel hm)
           
 
Method Summary
 HeapModel getHeapModel()
           
 java.util.Collection<java.lang.Object> getReachableInstances(java.util.Set<java.lang.Object> roots)
           
 java.util.Iterator<java.lang.Object> iterateNodes(IntSet s)
           
 void removeNodeAndEdges(java.lang.Object N)
          remove a node and all its incident edges
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
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
 
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

HeapGraph

protected HeapGraph(HeapModel hm)
Method Detail

iterateNodes

public java.util.Iterator<java.lang.Object> iterateNodes(IntSet s)
Specified by:
iterateNodes in interface NumberedNodeManager<java.lang.Object>
Returns:
iterator of nodes with the numbers in set s

getReachableInstances

public java.util.Collection<java.lang.Object> getReachableInstances(java.util.Set<java.lang.Object> roots)

removeNodeAndEdges

public void removeNodeAndEdges(java.lang.Object N)
Description copied from interface: Graph
remove a node and all its incident edges

Specified by:
removeNodeAndEdges in interface Graph<java.lang.Object>

getHeapModel

public HeapModel getHeapModel()
Returns:
Returns the heap model used in this pointer analysis.