Class 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
    See Also:
    https://mitpress.mit.edu/books/introduction-static-analysis
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  FieldSensitivePointBasedHeap.Rewriter
      A BaseHeapDomain.Rewriter for the FieldSensitivePointBasedHeap domain.
      • Nested classes/interfaces inherited from interface it.unive.lisa.analysis.heap.HeapSemanticOperation

        it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement
      • Nested classes/interfaces inherited from interface it.unive.lisa.analysis.SemanticDomain

        it.unive.lisa.analysis.SemanticDomain.Satisfiability
    • Field Summary

      • Fields inherited from interface it.unive.lisa.analysis.Lattice

        BOTTOM_STRING, TOP_STRING
    • 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

      • 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 interface it.unive.lisa.analysis.heap.HeapDomain<PointBasedHeap>
        Overrides:
        rewrite in class PointBasedHeap
        Throws:
        it.unive.lisa.analysis.SemanticException