Package it.unive.lisa.interprocedural
Class ModularWorstCaseAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>
- java.lang.Object
-
- it.unive.lisa.interprocedural.ModularWorstCaseAnalysis<A,H,V>
-
- Type Parameters:
A- the abstract state of the analysisH- the heap domainV- the value domain
- All Implemented Interfaces:
it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V>
public class ModularWorstCaseAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>> extends java.lang.Object implements it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V>A worst case modular analysis were all cfg calls are treated as open calls.
-
-
Constructor Summary
Constructors Constructor Description ModularWorstCaseAnalysis()Builds the interprocedural analysis.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidfixpoint(it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, java.lang.Class<? extends it.unive.lisa.util.collections.workset.WorkingSet<it.unive.lisa.program.cfg.statement.Statement>> fixpointWorkingSet, int wideningThreshold)it.unive.lisa.analysis.AnalysisState<A,H,V>getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.CFGCall call, it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters)it.unive.lisa.analysis.AnalysisState<A,H,V>getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.OpenCall call, it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters)java.util.Collection<it.unive.lisa.analysis.CFGWithAnalysisResults<A,H,V>>getAnalysisResultsOf(it.unive.lisa.program.cfg.CFG cfg)voidinit(it.unive.lisa.program.Program program, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph, it.unive.lisa.interprocedural.OpenCallPolicy policy)it.unive.lisa.program.cfg.statement.call.Callresolve(it.unive.lisa.program.cfg.statement.call.UnresolvedCall unresolvedCall)
-
-
-
Method Detail
-
fixpoint
public void fixpoint(it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, java.lang.Class<? extends it.unive.lisa.util.collections.workset.WorkingSet<it.unive.lisa.program.cfg.statement.Statement>> fixpointWorkingSet, int wideningThreshold) throws it.unive.lisa.util.datastructures.graph.algorithms.FixpointException
- Specified by:
fixpointin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.util.datastructures.graph.algorithms.FixpointException
-
getAnalysisResultsOf
public java.util.Collection<it.unive.lisa.analysis.CFGWithAnalysisResults<A,H,V>> getAnalysisResultsOf(it.unive.lisa.program.cfg.CFG cfg)
-
getAbstractResultOf
public it.unive.lisa.analysis.AnalysisState<A,H,V> getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.CFGCall call, it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters) throws it.unive.lisa.analysis.SemanticException
- Specified by:
getAbstractResultOfin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.analysis.SemanticException
-
getAbstractResultOf
public it.unive.lisa.analysis.AnalysisState<A,H,V> getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.OpenCall call, it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters) throws it.unive.lisa.analysis.SemanticException
- Specified by:
getAbstractResultOfin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.analysis.SemanticException
-
init
public void init(it.unive.lisa.program.Program program, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph, it.unive.lisa.interprocedural.OpenCallPolicy policy) throws it.unive.lisa.interprocedural.InterproceduralAnalysisException- Specified by:
initin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.interprocedural.InterproceduralAnalysisException
-
resolve
public it.unive.lisa.program.cfg.statement.call.Call resolve(it.unive.lisa.program.cfg.statement.call.UnresolvedCall unresolvedCall) throws it.unive.lisa.interprocedural.callgraph.CallResolutionException- Specified by:
resolvein interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.interprocedural.callgraph.CallResolutionException
-
-