Class BackwardAscendingFixpoint<A extends AbstractState<A>>
- java.lang.Object
-
- it.unive.lisa.program.cfg.fixpoints.BackwardCFGFixpoint<A>
-
- it.unive.lisa.program.cfg.fixpoints.BackwardAscendingFixpoint<A>
-
- Type Parameters:
A
- the type ofAbstractState
contained into the analysis state
- All Implemented Interfaces:
Fixpoint.FixpointImplementation<Statement,Edge,CFGFixpoint.CompoundState<A>>
public class BackwardAscendingFixpoint<A extends AbstractState<A>> extends BackwardCFGFixpoint<A>
ACFGFixpoint
that traverses ascending chains using lubs and widenings.
-
-
Field Summary
-
Fields inherited from class it.unive.lisa.program.cfg.fixpoints.BackwardCFGFixpoint
graph, interprocedural
-
-
Constructor Summary
Constructors Constructor Description BackwardAscendingFixpoint(CFG target, InterproceduralAnalysis<A> interprocedural, FixpointConfiguration config)
Builds the fixpoint implementation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equality(Statement node, CFGFixpoint.CompoundState<A> approx, CFGFixpoint.CompoundState<A> old)
Given a node and two states, yields whether or not the most recent one has to be considered equal to the older one in terms of fixpoint iterations.CFGFixpoint.CompoundState<A>
operation(Statement node, CFGFixpoint.CompoundState<A> approx, CFGFixpoint.CompoundState<A> old)
Given a node and two states, joins the states (i.e.-
Methods inherited from class it.unive.lisa.program.cfg.fixpoints.BackwardCFGFixpoint
semantics, traverse, union
-
-
-
-
Constructor Detail
-
BackwardAscendingFixpoint
public BackwardAscendingFixpoint(CFG target, InterproceduralAnalysis<A> interprocedural, FixpointConfiguration config)
Builds the fixpoint implementation.- Parameters:
target
- the target of the implementationinterprocedural
- theInterproceduralAnalysis
to use for semantics computationsconfig
- theFixpointConfiguration
to use
-
-
Method Detail
-
operation
public CFGFixpoint.CompoundState<A> operation(Statement node, CFGFixpoint.CompoundState<A> approx, CFGFixpoint.CompoundState<A> old) throws SemanticException
Description copied from interface:Fixpoint.FixpointImplementation
Given a node and two states, joins the states (i.e. least upper bound or widening) together.
This callback is invoked after the exit state of a node has been computed throughFixpoint.FixpointImplementation.semantics(Object, Object)
, to join it with results from older fixpoint iterations.- Parameters:
node
- the node where the computation takes placeapprox
- the most recent stateold
- the older state- Returns:
- the joined state
- Throws:
SemanticException
-
equality
public boolean equality(Statement node, CFGFixpoint.CompoundState<A> approx, CFGFixpoint.CompoundState<A> old) throws SemanticException
Description copied from interface:Fixpoint.FixpointImplementation
Given a node and two states, yields whether or not the most recent one has to be considered equal to the older one in terms of fixpoint iterations. This means that if this method returnstrue
, than the result for the given node won't be updated and the successors of such node won't be added back to the list of nodes to process.
This callback is invoked after the exit state of a node has been computed throughFixpoint.FixpointImplementation.semantics(Object, Object)
and joined with the older one throughFixpoint.FixpointImplementation.operation(Object, Object, Object)
.- Parameters:
node
- the node where the computation takes placeapprox
- the most recent stateold
- the older state- Returns:
true
if there is no need to update the previous result,false
otherwise- Throws:
SemanticException
-
-