Package it.unive.lisa.interprocedural
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>>
- java.lang.Object
-
- it.unive.lisa.analysis.BaseLattice<F>
-
- it.unive.lisa.analysis.lattices.FunctionalLattice<FixpointResults<A,H,V,T>,it.unive.lisa.program.cfg.CFG,CFGResults<A,H,V,T>>
-
- it.unive.lisa.interprocedural.FixpointResults<A,H,V,T>
-
- Type Parameters:
A
- the type ofAbstractState
contained into the analysis stateH
- the type ofHeapDomain
contained into the computed abstract stateV
- the type ofValueDomain
contained into the computed abstract stateT
- the type ofTypeDomain
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>>
AFunctionalLattice
fromCFG
s toCFGResults
s. 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>
-
-
Constructor Summary
Constructors Constructor Description FixpointResults(CFGResults<A,H,V,T> lattice)
Builds a new result.
-
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)
Yieldstrue
if a result exists for the givencfg
.void
forget(it.unive.lisa.program.cfg.CFG cfg)
Forgets all results about the givenCFG
.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
-
-
-
-
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 callingCFGResults.putResult(ContextSensitivityToken, CFGWithAnalysisResults)
with the giventoken
andresult
on theCFGResults
instance corresponding tocfg
.- Parameters:
cfg
- theCFG
on which the result has been computedtoken
- theContextSensitivityToken
that identifying the resultresult
- theCFGWithAnalysisResults
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)
Yieldstrue
if a result exists for the givencfg
.- Parameters:
cfg
- theCFG
whose result is to be checked- Returns:
true
if that condition holds
-
top
public FixpointResults<A,H,V,T> top()
-
bottom
public FixpointResults<A,H,V,T> bottom()
-
forget
public void forget(it.unive.lisa.program.cfg.CFG cfg)
Forgets all results about the givenCFG
.- 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 classit.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>>>
-
-