Package soot.jimple.spark.ondemand
Class LazyContextSensitivePointsToSet
- java.lang.Object
-
- soot.jimple.spark.ondemand.LazyContextSensitivePointsToSet
-
- All Implemented Interfaces:
EqualsSupportingPointsToSet,PointsToSet
public class LazyContextSensitivePointsToSet extends Object implements EqualsSupportingPointsToSet
This is a lazy points-to set that is potentially context sensitive. It is created by theDemandCSPointsToanalysis. The idea is that the points-to set is usually context-insensitive. However, when compared with another points-to set and the intersection of these points-to sets is non-empty, then context information is computed for this points-to set and also for the other one, if applicable. Then the test is repeated. Once context information is computed it is stored in this wrapper object so that it does not have to be computed again. Objects of this type should only be compared to otherLazyContextSensitivePointsToSetobjects using the equals method. Checking for non-empty intersection with points-to sets of other types should be possible but it is recommended to consistently useLazyContextSensitivePointsToSetnevertheless.- Author:
- Eric Bodden
-
-
Constructor Summary
Constructors Constructor Description LazyContextSensitivePointsToSet(Local l, EqualsSupportingPointsToSet contextInsensitiveSet, DemandCSPointsTo demandCSPointsTo)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcomputeContextSensitiveInfo()EqualsSupportingPointsToSetgetDelegate()booleanhasNonEmptyIntersection(PointsToSet other)Returns true if this set shares some objects with other.booleanisContextSensitive()booleanisEmpty()Returns true if this set contains no run-time objects.booleanpointsToSetEquals(Object other)Returnstrueif and only if other holds the same alloc nodes as this.intpointsToSetHashCode()Computes a hash code based on the contents of the points-to set.Set<ClassConstant>possibleClassConstants()If this points-to set consists entirely of objects of type java.lang.Class of a known class, returns a set of ClassConstant's that are these classes.Set<String>possibleStringConstants()If this points-to set consists entirely of string constants, returns a set of these constant strings.Set<Type>possibleTypes()Set of all possible run-time types of objects in the set.
-
-
-
Constructor Detail
-
LazyContextSensitivePointsToSet
public LazyContextSensitivePointsToSet(Local l, EqualsSupportingPointsToSet contextInsensitiveSet, DemandCSPointsTo demandCSPointsTo)
-
-
Method Detail
-
isContextSensitive
public boolean isContextSensitive()
-
hasNonEmptyIntersection
public boolean hasNonEmptyIntersection(PointsToSet other)
Description copied from interface:PointsToSetReturns true if this set shares some objects with other.- Specified by:
hasNonEmptyIntersectionin interfacePointsToSet
-
computeContextSensitiveInfo
public void computeContextSensitiveInfo()
-
isEmpty
public boolean isEmpty()
Description copied from interface:PointsToSetReturns true if this set contains no run-time objects.- Specified by:
isEmptyin interfacePointsToSet
-
possibleClassConstants
public Set<ClassConstant> possibleClassConstants()
Description copied from interface:PointsToSetIf this points-to set consists entirely of objects of type java.lang.Class of a known class, returns a set of ClassConstant's that are these classes. If this point-to set may contain something else, returns null.- Specified by:
possibleClassConstantsin interfacePointsToSet
-
possibleStringConstants
public Set<String> possibleStringConstants()
Description copied from interface:PointsToSetIf this points-to set consists entirely of string constants, returns a set of these constant strings. If this point-to set may contain something other than constant strings, returns null.- Specified by:
possibleStringConstantsin interfacePointsToSet
-
possibleTypes
public Set<Type> possibleTypes()
Description copied from interface:PointsToSetSet of all possible run-time types of objects in the set.- Specified by:
possibleTypesin interfacePointsToSet
-
pointsToSetEquals
public boolean pointsToSetEquals(Object other)
Description copied from interface:EqualsSupportingPointsToSetReturnstrueif and only if other holds the same alloc nodes as this. Note that equals() is not overwritten on purpose. This is because Spark relies on comparison by object identity.- Specified by:
pointsToSetEqualsin interfaceEqualsSupportingPointsToSet
-
pointsToSetHashCode
public int pointsToSetHashCode()
Description copied from interface:EqualsSupportingPointsToSetComputes a hash code based on the contents of the points-to set. Note that hashCode() is not overwritten on purpose. This is because Spark relies on comparison by object identity.- Specified by:
pointsToSetHashCodein interfaceEqualsSupportingPointsToSet
-
getDelegate
public EqualsSupportingPointsToSet getDelegate()
-
-