Class FieldSensitivePointBasedHeap
- java.lang.Object
-
- it.unive.lisa.analysis.BaseLattice<H>
-
- it.unive.lisa.analysis.heap.BaseHeapDomain<PointBasedHeap>
-
- it.unive.lisa.analysis.heap.pointbased.PointBasedHeap
-
- it.unive.lisa.analysis.heap.pointbased.FieldSensitivePointBasedHeap
-
- All Implemented Interfaces:
it.unive.lisa.analysis.heap.HeapDomain<PointBasedHeap>
,it.unive.lisa.analysis.heap.HeapSemanticOperation
,it.unive.lisa.analysis.Lattice<PointBasedHeap>
,it.unive.lisa.analysis.SemanticDomain<PointBasedHeap,it.unive.lisa.symbolic.SymbolicExpression,it.unive.lisa.symbolic.value.Identifier>
public class FieldSensitivePointBasedHeap extends PointBasedHeap
A field-sensitive point-based heap implementation that abstracts heap locations depending on their allocation sites, namely the position of the code where heap locations are generated. All heap locations that are generated at the same allocation sites are abstracted into a single unique heap identifier. The analysis is field-sensitive in the sense that all the field accesses, with the same field, to a specific allocation site are abstracted into a single heap identifier. 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 Modifier and Type Class Description class
FieldSensitivePointBasedHeap.Rewriter
ABaseHeapDomain.Rewriter
for theFieldSensitivePointBasedHeap
domain.
-
Field Summary
-
Fields inherited from class it.unive.lisa.analysis.heap.pointbased.PointBasedHeap
heapEnv
-
-
Constructor Summary
Constructors Constructor Description FieldSensitivePointBasedHeap()
Builds a new instance of field-sensitive point-based heap.FieldSensitivePointBasedHeap(it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv)
Builds a new instance of field-sensitive point-based heap from its heap environment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FieldSensitivePointBasedHeap
from(PointBasedHeap original)
Builds a point-based heap from a reference one.it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.value.ValueExpression>
rewrite(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp)
-
Methods inherited from class it.unive.lisa.analysis.heap.pointbased.PointBasedHeap
assign, assume, bottom, equals, forgetIdentifier, forgetIdentifiersIf, getSubstitution, hashCode, isBottom, isTop, lessOrEqualAux, lubAux, mk, popScope, pushScope, representation, satisfies, semanticsOf, top
-
Methods inherited from class it.unive.lisa.analysis.heap.BaseHeapDomain
smallStepSemantics, toString
-
Methods inherited from class it.unive.lisa.analysis.BaseLattice
lessOrEqual, lub, widening, wideningAux
-
-
-
-
Constructor Detail
-
FieldSensitivePointBasedHeap
public FieldSensitivePointBasedHeap()
Builds a new instance of field-sensitive point-based heap.
-
FieldSensitivePointBasedHeap
public FieldSensitivePointBasedHeap(it.unive.lisa.analysis.nonrelational.heap.HeapEnvironment<AllocationSites> heapEnv)
Builds a new instance of field-sensitive point-based heap from its heap environment.- Parameters:
heapEnv
- the heap environment that this instance tracks
-
-
Method Detail
-
from
public FieldSensitivePointBasedHeap from(PointBasedHeap original)
Description copied from class:PointBasedHeap
Builds a point-based heap from a reference one.- Overrides:
from
in classPointBasedHeap
- Parameters:
original
- reference point-based heap- Returns:
- a point-based heap build from the original one
-
rewrite
public it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.value.ValueExpression> rewrite(it.unive.lisa.symbolic.SymbolicExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp) throws it.unive.lisa.analysis.SemanticException
- Specified by:
rewrite
in interfaceit.unive.lisa.analysis.heap.HeapDomain<PointBasedHeap>
- Overrides:
rewrite
in classPointBasedHeap
- Throws:
it.unive.lisa.analysis.SemanticException
-
-