Class PointBasedHeap
- java.lang.Object
-
- it.unive.lisa.analysis.heap.pointbased.AllocationSiteBasedAnalysis<PointBasedHeap>
-
- it.unive.lisa.analysis.heap.pointbased.PointBasedHeap
-
- All Implemented Interfaces:
it.unive.lisa.analysis.BaseLattice<PointBasedHeap>
,it.unive.lisa.analysis.heap.BaseHeapDomain<PointBasedHeap>
,it.unive.lisa.analysis.heap.HeapDomain<PointBasedHeap>
,it.unive.lisa.analysis.heap.HeapSemanticOperation
,it.unive.lisa.analysis.heap.MemoryOracle
,it.unive.lisa.analysis.Lattice<PointBasedHeap>
,it.unive.lisa.analysis.ScopedObject<PointBasedHeap>
,it.unive.lisa.analysis.SemanticDomain<PointBasedHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
,it.unive.lisa.util.representation.StructuredObject
public class PointBasedHeap extends AllocationSiteBasedAnalysis<PointBasedHeap>
A field-insensitive program point-basedAllocationSiteBasedAnalysis
. The implementation follows X. Rival and K. Yi, "Introduction to Static Analysis An Abstract Interpretation Perspective", Section 8.3.4
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class it.unive.lisa.analysis.heap.pointbased.AllocationSiteBasedAnalysis
AllocationSiteBasedAnalysis.Rewriter
-
-
Field Summary
-
Fields inherited from class it.unive.lisa.analysis.heap.pointbased.AllocationSiteBasedAnalysis
heapEnv, replacements
-
-
Constructor Summary
Constructors Constructor Description PointBasedHeap()
Builds a new instance of field-insensitive point-based heap.PointBasedHeap(it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv)
Builds a new instance of field-insensitive point-based heap from its heap environment.PointBasedHeap(it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv, java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
Builds a new instance of field-insensitive point-based heap from its heap environment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PointBasedHeap
bottom()
PointBasedHeap
forgetIdentifier(it.unive.lisa.symbolic.value.Identifier id)
PointBasedHeap
forgetIdentifiersIf(java.util.function.Predicate<it.unive.lisa.symbolic.value.Identifier> test)
java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement>
getSubstitution()
PointBasedHeap
glbAux(PointBasedHeap other)
boolean
lessOrEqualAux(PointBasedHeap other)
PointBasedHeap
lubAux(PointBasedHeap other)
PointBasedHeap
mk(PointBasedHeap reference)
protected PointBasedHeap
mk(PointBasedHeap reference, it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv)
Builds a new instance of this class by copying abstract information fromreference
and using the given environment for storing points-to information.PointBasedHeap
mk(PointBasedHeap reference, java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
PointBasedHeap
popScope(it.unive.lisa.analysis.ScopeToken scope)
PointBasedHeap
pushScope(it.unive.lisa.analysis.ScopeToken scope)
PointBasedHeap
top()
-
Methods inherited from class it.unive.lisa.analysis.heap.pointbased.AllocationSiteBasedAnalysis
alias, assign, assume, equals, getAllocatedAt, hashCode, isBottom, isReachableFrom, isTop, knowsIdentifier, representation, rewrite, satisfies, semanticsOf, shallowCopy
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface it.unive.lisa.analysis.BaseLattice
glb, lessOrEqual, lub, narrowing, narrowingAux, toString, widening, wideningAux
-
-
-
-
Constructor Detail
-
PointBasedHeap
public PointBasedHeap()
Builds a new instance of field-insensitive point-based heap.
-
PointBasedHeap
public PointBasedHeap(it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv)
Builds a new instance of field-insensitive point-based heap from its heap environment.- Parameters:
heapEnv
- the heap environment that this instance tracks
-
PointBasedHeap
public PointBasedHeap(it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv, java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
Builds a new instance of field-insensitive point-based heap from its heap environment.- Parameters:
heapEnv
- the heap environment that this instance tracksreplacements
- the heap replacements of this instance
-
-
Method Detail
-
mk
public PointBasedHeap mk(PointBasedHeap reference)
-
mk
public PointBasedHeap mk(PointBasedHeap reference, java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> replacements)
-
mk
protected PointBasedHeap mk(PointBasedHeap reference, it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv)
Description copied from class:AllocationSiteBasedAnalysis
Builds a new instance of this class by copying abstract information fromreference
and using the given environment for storing points-to information.- Specified by:
mk
in classAllocationSiteBasedAnalysis<PointBasedHeap>
- Parameters:
reference
- the domain whose abstract information needs to be copiedheapEnv
- the heap environment that this instance tracks- Returns:
- the new instance
-
top
public PointBasedHeap top()
-
bottom
public PointBasedHeap bottom()
-
getSubstitution
public java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> getSubstitution()
- Specified by:
getSubstitution
in interfaceit.unive.lisa.analysis.heap.HeapSemanticOperation
- Overrides:
getSubstitution
in classAllocationSiteBasedAnalysis<PointBasedHeap>
-
lubAux
public PointBasedHeap lubAux(PointBasedHeap other) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
glbAux
public PointBasedHeap glbAux(PointBasedHeap other) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
lessOrEqualAux
public boolean lessOrEqualAux(PointBasedHeap other) throws it.unive.lisa.analysis.SemanticException
- Specified by:
lessOrEqualAux
in interfaceit.unive.lisa.analysis.BaseLattice<PointBasedHeap>
- Overrides:
lessOrEqualAux
in classAllocationSiteBasedAnalysis<PointBasedHeap>
- Throws:
it.unive.lisa.analysis.SemanticException
-
popScope
public PointBasedHeap popScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
pushScope
public PointBasedHeap pushScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
forgetIdentifier
public PointBasedHeap forgetIdentifier(it.unive.lisa.symbolic.value.Identifier id) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
forgetIdentifiersIf
public PointBasedHeap forgetIdentifiersIf(java.util.function.Predicate<it.unive.lisa.symbolic.value.Identifier> test) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
-