public class ConstantPropagationStore extends Object implements Store<ConstantPropagationStore>
Store.FlowRule, Store.Kind
Modifier | Constructor and Description |
---|---|
|
ConstantPropagationStore() |
protected |
ConstantPropagationStore(Map<Node,Constant> contents) |
Modifier and Type | Method and Description |
---|---|
boolean |
canAlias(FlowExpressions.Receiver a,
FlowExpressions.Receiver b)
Can the objects
a and b be aliases? Returns a conservative answer (i.e.,
returns true if not enough information is available to determine aliasing). |
ConstantPropagationStore |
copy() |
boolean |
equals(@Nullable Object o) |
Constant |
getInformation(Node n) |
int |
hashCode() |
ConstantPropagationStore |
leastUpperBound(ConstantPropagationStore other)
Compute the least upper bound of two stores.
|
void |
mergeInformation(Node n,
Constant val) |
void |
setInformation(Node n,
Constant val) |
String |
toString() |
String |
visualize(CFGVisualizer<?,ConstantPropagationStore,?> viz)
Delegate visualization responsibility to a visualizer.
|
ConstantPropagationStore |
widenedUpperBound(ConstantPropagationStore previous)
Compute an upper bound of two stores that is wider than the least upper bound of the two
stores.
|
public ConstantPropagationStore copy()
copy
in interface Store<ConstantPropagationStore>
public ConstantPropagationStore leastUpperBound(ConstantPropagationStore other)
Store
Important: This method must fulfill the following contract:
this
.
other
.
this
, even if the signature is
more permissive.
leastUpperBound
in interface Store<ConstantPropagationStore>
public ConstantPropagationStore widenedUpperBound(ConstantPropagationStore previous)
Store
Analysis
. 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:
this
.
previous
.
this
, even if the signature is
more permissive.
widenedUpperBound
in interface Store<ConstantPropagationStore>
previous
- must be the previous storepublic boolean canAlias(FlowExpressions.Receiver a, FlowExpressions.Receiver b)
Store
a
and b
be aliases? Returns a conservative answer (i.e.,
returns true
if not enough information is available to determine aliasing).canAlias
in interface Store<ConstantPropagationStore>
public String visualize(CFGVisualizer<?,ConstantPropagationStore,?> viz)
visualize
in interface Store<ConstantPropagationStore>
viz
- the visualizer to visualize this storenull
because ConstantPropagationStore
doesn't support visualization