public class ConstantPropagationStore extends java.lang.Object implements Store<ConstantPropagationStore>
Store.FlowRule, Store.Kind
Modifier | Constructor and Description |
---|---|
|
ConstantPropagationStore() |
protected |
ConstantPropagationStore(java.util.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(java.lang.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) |
java.lang.String |
toString() |
void |
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 equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
public 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 void visualize(CFGVisualizer<?,ConstantPropagationStore,?> viz)
Store
visualize
in interface Store<ConstantPropagationStore>
viz
- the visualizer to visualize this store