Class ConstantPropagationStore
java.lang.Object
org.checkerframework.dataflow.constantpropagation.ConstantPropagationStore
- All Implemented Interfaces:
Store<ConstantPropagationStore>
A store that records information about constant values.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.checkerframework.dataflow.analysis.Store
Store.FlowRule, Store.Kind
-
Constructor Summary
ModifierConstructorDescriptionCreates a new ConstantPropagationStore.protected
ConstantPropagationStore
(Map<Node, Constant> contents) -
Method Summary
Modifier and TypeMethodDescriptionboolean
Can the objectsa
andb
be aliases? Returns a conservative answer (i.e., returnstrue
if not enough information is available to determine aliasing).copy()
Returns an exact copy of this store.boolean
Returns true if this is equal to the given argument.int
hashCode()
Compute the least upper bound of two stores.void
mergeInformation
(Node n, Constant val) void
setInformation
(Node n, Constant val) toString()
visualize
(CFGVisualizer<?, ConstantPropagationStore, ?> viz) Delegate visualization responsibility to a visualizer.widenedUpperBound
(ConstantPropagationStore previous) Compute an upper bound of two stores that is wider than the least upper bound of the two stores.
-
Constructor Details
-
ConstantPropagationStore
public ConstantPropagationStore()Creates a new ConstantPropagationStore. -
ConstantPropagationStore
-
-
Method Details
-
getInformation
-
mergeInformation
-
setInformation
-
copy
Description copied from interface:Store
Returns an exact copy of this store.- Specified by:
copy
in interfaceStore<ConstantPropagationStore>
- Returns:
- an exact copy of this store
-
leastUpperBound
Description copied from interface:Store
Compute the least upper bound of two stores.Important: This method must fulfill the following contract:
- Does not change
this
. - Does not change
other
. - Returns a fresh object which is not aliased yet.
- Returns an object of the same (dynamic) type as
this
, even if the signature is more permissive. - Is commutative.
- Specified by:
leastUpperBound
in interfaceStore<ConstantPropagationStore>
- Does not change
-
widenedUpperBound
Description copied from interface:Store
Compute an upper bound of two stores that is wider than the least upper bound of the two stores. Used to jump to a higher abstraction to allow faster termination of the fixed point computations inAnalysis
.previous
must be the previous store.A particular analysis might not require widening and should implement this method by calling leastUpperBound.
Important: This method must fulfill the following contract:
- Does not change
this
. - Does not change
previous
. - Returns a fresh object which is not aliased yet.
- Returns an object of the same (dynamic) type as
this
, even if the signature is more permissive. - Is commutative.
- Specified by:
widenedUpperBound
in interfaceStore<ConstantPropagationStore>
- Parameters:
previous
- must be the previous store
- Does not change
-
equals
Description copied from interface:Store
Returns true if this is equal to the given argument.- Specified by:
equals
in interfaceStore<ConstantPropagationStore>
- Overrides:
equals
in classObject
- Parameters:
o
- the object to compare against this- Returns:
- true if this is equal to the given argument
-
hashCode
public int hashCode() -
toString
-
canAlias
Description copied from interface:Store
Can the objectsa
andb
be aliases? Returns a conservative answer (i.e., returnstrue
if not enough information is available to determine aliasing).- Specified by:
canAlias
in interfaceStore<ConstantPropagationStore>
-
visualize
Delegate visualization responsibility to a visualizer.value
isnull
becauseConstantPropagationStore
doesn't support visualization.- Specified by:
visualize
in interfaceStore<ConstantPropagationStore>
- Parameters:
viz
- the visualizer to visualize this store- Returns:
- the String representation of this store
-