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