Class FixpointResults<A extends it.unive.lisa.analysis.AbstractState<A,​H,​V,​T>,​H extends it.unive.lisa.analysis.heap.HeapDomain<H>,​V extends it.unive.lisa.analysis.value.ValueDomain<V>,​T extends it.unive.lisa.analysis.value.TypeDomain<T>>

  • Type Parameters:
    A - the type of AbstractState contained into the analysis state
    H - the type of HeapDomain contained into the computed abstract state
    V - the type of ValueDomain contained into the computed abstract state
    T - the type of TypeDomain contained into the computed abstract state
    All Implemented Interfaces:
    it.unive.lisa.analysis.Lattice<FixpointResults<A,​H,​V,​T>>, java.lang.Iterable<java.util.Map.Entry<it.unive.lisa.program.cfg.CFG,​CFGResults<A,​H,​V,​T>>>

    public class FixpointResults<A extends it.unive.lisa.analysis.AbstractState<A,​H,​V,​T>,​H extends it.unive.lisa.analysis.heap.HeapDomain<H>,​V extends it.unive.lisa.analysis.value.ValueDomain<V>,​T extends it.unive.lisa.analysis.value.TypeDomain<T>>
    extends it.unive.lisa.analysis.lattices.FunctionalLattice<FixpointResults<A,​H,​V,​T>,​it.unive.lisa.program.cfg.CFG,​CFGResults<A,​H,​V,​T>>
    A FunctionalLattice from CFGs to CFGResultss. This class is meant to store all fixpoint results on all token generated during the interprocedural analysis for each cfg under analysis.
    • Nested Class Summary

      • Nested classes/interfaces inherited from class it.unive.lisa.analysis.lattices.FunctionalLattice

        it.unive.lisa.analysis.lattices.FunctionalLattice.FunctionalLift<V extends it.unive.lisa.analysis.Lattice<V>>, it.unive.lisa.analysis.lattices.FunctionalLattice.KeyFunctionalLift<K extends java.lang.Object>
    • Field Summary

      • Fields inherited from class it.unive.lisa.analysis.lattices.FunctionalLattice

        function, lattice
      • Fields inherited from interface it.unive.lisa.analysis.Lattice

        BOTTOM_STRING, TOP_STRING
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      FixpointResults<A,​H,​V,​T> bottom()  
      boolean contains​(it.unive.lisa.program.cfg.CFG cfg)
      Yields true if a result exists for the given cfg.
      void forget​(it.unive.lisa.program.cfg.CFG cfg)
      Forgets all results about the given CFG.
      FixpointResults<A,​H,​V,​T> mk​(CFGResults<A,​H,​V,​T> lattice, java.util.Map<it.unive.lisa.program.cfg.CFG,​CFGResults<A,​H,​V,​T>> function)  
      org.apache.commons.lang3.tuple.Pair<java.lang.Boolean,​it.unive.lisa.analysis.CFGWithAnalysisResults<A,​H,​V,​T>> putResult​(it.unive.lisa.program.cfg.CFG cfg, ContextSensitivityToken token, it.unive.lisa.analysis.CFGWithAnalysisResults<A,​H,​V,​T> result)
      Stores the result of a fixpoint computation on a cfg.
      FixpointResults<A,​H,​V,​T> top()  
      • Methods inherited from class it.unive.lisa.analysis.lattices.FunctionalLattice

        equals, functionalLift, getKeys, getMap, getState, getValues, glbKeys, hashCode, isBottom, isTop, iterator, lessOrEqualAux, lubAux, lubKeys, mkNewFunction, putState, toString, wideningAux
      • Methods inherited from class it.unive.lisa.analysis.BaseLattice

        lessOrEqual, lub, widening
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
    • Constructor Detail

      • FixpointResults

        public FixpointResults​(CFGResults<A,​H,​V,​T> lattice)
        Builds a new result.
        Parameters:
        lattice - a singleton instance used for retrieving top and bottom values
    • Method Detail

      • putResult

        public org.apache.commons.lang3.tuple.Pair<java.lang.Boolean,​it.unive.lisa.analysis.CFGWithAnalysisResults<A,​H,​V,​T>> putResult​(it.unive.lisa.program.cfg.CFG cfg,
                                                                                                                                                               ContextSensitivityToken token,
                                                                                                                                                               it.unive.lisa.analysis.CFGWithAnalysisResults<A,​H,​V,​T> result)
                                                                                                                                                        throws it.unive.lisa.analysis.SemanticException
        Stores the result of a fixpoint computation on a cfg. This method returns the result of calling CFGResults.putResult(ContextSensitivityToken, CFGWithAnalysisResults) with the given token and result on the CFGResults instance corresponding to cfg.
        Parameters:
        cfg - the CFG on which the result has been computed
        token - the ContextSensitivityToken that identifying the result
        result - the CFGWithAnalysisResults to store
        Returns:
        the result of the update operation on the individual cfg result
        Throws:
        it.unive.lisa.analysis.SemanticException - if something goes wrong during the update
      • contains

        public boolean contains​(it.unive.lisa.program.cfg.CFG cfg)
        Yields true if a result exists for the given cfg.
        Parameters:
        cfg - the CFG whose result is to be checked
        Returns:
        true if that condition holds
      • forget

        public void forget​(it.unive.lisa.program.cfg.CFG cfg)
        Forgets all results about the given CFG.
        Parameters:
        cfg - the cfg to forget
      • mk

        public FixpointResults<A,​H,​V,​T> mk​(CFGResults<A,​H,​V,​T> lattice,
                                                             java.util.Map<it.unive.lisa.program.cfg.CFG,​CFGResults<A,​H,​V,​T>> function)
        Specified by:
        mk in class it.unive.lisa.analysis.lattices.FunctionalLattice<FixpointResults<A extends it.unive.lisa.analysis.AbstractState<A,​H,​V,​T>,​H extends it.unive.lisa.analysis.heap.HeapDomain<H>,​V extends it.unive.lisa.analysis.value.ValueDomain<V>,​T extends it.unive.lisa.analysis.value.TypeDomain<T>>,​it.unive.lisa.program.cfg.CFG,​CFGResults<A extends it.unive.lisa.analysis.AbstractState<A,​H,​V,​T>,​H extends it.unive.lisa.analysis.heap.HeapDomain<H>,​V extends it.unive.lisa.analysis.value.ValueDomain<V>,​T extends it.unive.lisa.analysis.value.TypeDomain<T>>>