com.ibm.wala.ipa.callgraph.propagation
Class PointsToMap

java.lang.Object
  extended by com.ibm.wala.ipa.callgraph.propagation.PointsToMap

public class PointsToMap
extends java.lang.Object

An object that tracks the mapping between pointer keys and points-to set variables


Constructor Summary
PointsToMap()
           
 
Method Summary
 int getIndex(PointerKey p)
           
protected  int getNumberOfPointerKeys()
           
 PointsToSetVariable getPointsToSet(int id)
           
 PointsToSetVariable getPointsToSet(PointerKey p)
          If p is unified, returns the representative for p.
 int getRepresentative(int i)
           
 java.util.Iterator<PointerKey> getTransitiveRoots()
           
 boolean isImplicit(PointerKey p)
           
 boolean isUnified(PointerKey p)
           
 java.util.Iterator<PointerKey> iterateKeys()
           
 void put(PointerKey key, PointsToSetVariable v)
           
 void recordImplicit(PointerKey key)
          record that a particular points-to-set is represented implicitly
 void recordTransitiveRoot(PointerKey key)
          record points-to-sets that are "roots" of the transitive closure.
 void recordUnified(PointerKey key)
          record that a particular points-to-set has been unioned with another
 void revertToPreTransitive()
          Wipe out the cached transitive closure information
 void unify(int i, int j)
          Unify the points-to-sets for the variables with numbers i and j
 void unify(IntSet s)
          Unify the points-to-sets for the variables identified by the set s
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PointsToMap

public PointsToMap()
Method Detail

iterateKeys

public java.util.Iterator<PointerKey> iterateKeys()
Returns:
iterator of all PointerKeys tracked

getPointsToSet

public PointsToSetVariable getPointsToSet(PointerKey p)
If p is unified, returns the representative for p.


getPointsToSet

public PointsToSetVariable getPointsToSet(int id)
Returns:
the PointsToSetVariable recorded for a particular id

recordImplicit

public void recordImplicit(PointerKey key)
record that a particular points-to-set is represented implicitly


put

public void put(PointerKey key,
                PointsToSetVariable v)

recordUnified

public void recordUnified(PointerKey key)
record that a particular points-to-set has been unioned with another


recordTransitiveRoot

public void recordTransitiveRoot(PointerKey key)
record points-to-sets that are "roots" of the transitive closure. These points-to-sets can't be thrown away for a pre-transitive solver. A "root" is a points-to-set whose contents do not result from flow from other points-to-sets; there points-to-sets are the primordial assignments from which the transitive closure flows.


isUnified

public boolean isUnified(PointerKey p)

isImplicit

public boolean isImplicit(PointerKey p)

getNumberOfPointerKeys

protected int getNumberOfPointerKeys()

revertToPreTransitive

public void revertToPreTransitive()
Wipe out the cached transitive closure information


getTransitiveRoots

public java.util.Iterator<PointerKey> getTransitiveRoots()
Returns:
Iterator

unify

public void unify(IntSet s)
           throws java.lang.IllegalArgumentException
Unify the points-to-sets for the variables identified by the set s

Parameters:
s - numbers of points-to-set variables
Throws:
java.lang.IllegalArgumentException - if s is null

unify

public void unify(int i,
                  int j)
Unify the points-to-sets for the variables with numbers i and j


getIndex

public int getIndex(PointerKey p)
Returns:
the unique integer that identifies this pointer key

getRepresentative

public int getRepresentative(int i)