Class BackwardDescendingGLBFixpoint<A extends AbstractState<A>>
- java.lang.Object
-
- it.unive.lisa.program.cfg.fixpoints.BackwardCFGFixpoint<A>
-
- it.unive.lisa.program.cfg.fixpoints.BackwardDescendingGLBFixpoint<A>
-
- Type Parameters:
A
- the type ofAbstractState
contained into the analysis state
- All Implemented Interfaces:
Fixpoint.FixpointImplementation<Statement,Edge,CFGFixpoint.CompoundState<A>>
public class BackwardDescendingGLBFixpoint<A extends AbstractState<A>> extends BackwardCFGFixpoint<A>
ACFGFixpoint
that traverses descending chains using glbs up to threshold.
-
-
Field Summary
-
Fields inherited from class it.unive.lisa.program.cfg.fixpoints.BackwardCFGFixpoint
graph, interprocedural
-
-
Constructor Summary
Constructors Constructor Description BackwardDescendingGLBFixpoint(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
-
BackwardDescendingGLBFixpoint
public BackwardDescendingGLBFixpoint(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
-
-