Class PointBasedHeap

    • 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 tracks
        replacements - the heap replacements of this instance
    • Method Detail

      • 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 from reference and using the given environment for storing points-to information.
        Specified by:
        mk in class AllocationSiteBasedAnalysis<PointBasedHeap>
        Parameters:
        reference - the domain whose abstract information needs to be copied
        heapEnv - the heap environment that this instance tracks
        Returns:
        the new instance
      • getSubstitution

        public java.util.List<it.unive.lisa.analysis.heap.HeapSemanticOperation.HeapReplacement> getSubstitution()
        Specified by:
        getSubstitution in interface it.unive.lisa.analysis.heap.HeapSemanticOperation
        Overrides:
        getSubstitution in class AllocationSiteBasedAnalysis<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
      • 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