Class PointsToMap
- java.lang.Object
-
- com.ibm.wala.ipa.callgraph.propagation.PointsToMap
-
public class PointsToMap extends Object
An object that tracks the mapping between pointer keys and points-to set variables
-
-
Constructor Summary
Constructors Constructor Description PointsToMap()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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)
Iterator<PointerKey>
getTransitiveRoots()
boolean
isImplicit(PointerKey p)
boolean
isUnified(PointerKey p)
Iterator<PointerKey>
iterateKeys()
void
put(PointerKey key, PointsToSetVariable v)
void
recordImplicit(PointerKey key)
record that a particular points-to-set is represented implicitlyvoid
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 anothervoid
revertToPreTransitive()
Wipe out the cached transitive closure informationvoid
unify(int i, int j)
Unify the points-to-sets for the variables with numbers i and jvoid
unify(IntSet s)
Unify the points-to-sets for the variables identified by the set s
-
-
-
Method Detail
-
iterateKeys
public 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 Iterator<PointerKey> getTransitiveRoots()
- Returns:
- Iterator
-
unify
public void unify(IntSet s) throws IllegalArgumentException
Unify the points-to-sets for the variables identified by the set s- Parameters:
s
- numbers of points-to-set variables- Throws:
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)
-
-