public class LiveVarStore extends Object implements Store<LiveVarStore>
Store.FlowRule, Store.Kind
Constructor and Description |
---|
LiveVarStore()
Create a new LiveVarStore.
|
LiveVarStore(Set<LiveVarValue> liveVarValueSet)
Create a new LiveVarStore.
|
Modifier and Type | Method and Description |
---|---|
void |
addUseInExpression(Node expression)
Add the information of live variables in an expression to the live variable set.
|
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). |
LiveVarStore |
copy()
Returns an exact copy of this store.
|
boolean |
equals(@Nullable Object obj) |
int |
hashCode() |
void |
killLiveVar(LiveVarValue variable)
Remove the information of a live variable from the live variable set.
|
LiveVarStore |
leastUpperBound(LiveVarStore other)
Compute the least upper bound of two stores.
|
void |
putLiveVar(LiveVarValue variable)
Add the information of a live variable into the live variable set.
|
String |
toString() |
String |
visualize(CFGVisualizer<?,LiveVarStore,?> viz)
Delegate visualization responsibility to a visualizer.
|
LiveVarStore |
widenedUpperBound(LiveVarStore previous)
It should not be called since it is not used by the backward analysis.
|
public LiveVarStore()
public LiveVarStore(Set<LiveVarValue> liveVarValueSet)
liveVarValueSet
- a set of live variable abstract valuespublic void putLiveVar(LiveVarValue variable)
variable
- a live variablepublic void killLiveVar(LiveVarValue variable)
variable
- a live variablepublic void addUseInExpression(Node expression)
expression
- a nodepublic LiveVarStore copy()
Store
copy
in interface Store<LiveVarStore>
public LiveVarStore leastUpperBound(LiveVarStore other)
Store
Important: This method must fulfill the following contract:
this
.
other
.
this
, even if the signature is
more permissive.
leastUpperBound
in interface Store<LiveVarStore>
public LiveVarStore widenedUpperBound(LiveVarStore previous)
widenedUpperBound
in interface Store<LiveVarStore>
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<LiveVarStore>
public String visualize(CFGVisualizer<?,LiveVarStore,?> viz)
Store
visualize
in interface Store<LiveVarStore>
viz
- the visualizer to visualize this store