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()
Returns an exact copy of this store.
|
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()
Storecopy in interface Store<ConstantPropagationStore>public ConstantPropagationStore leastUpperBound(ConstantPropagationStore other)
StoreImportant: 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)
StoreAnalysis. 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)
Storea 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)
value is null because ConstantPropagationStore doesn't support
visualization.
visualize in interface Store<ConstantPropagationStore>viz - the visualizer to visualize this store