Class BusyExprStore
java.lang.Object
org.checkerframework.dataflow.busyexpr.BusyExprStore
- All Implemented Interfaces:
Store<BusyExprStore>
A busy expression store contains a set of busy expressions represented by nodes.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.checkerframework.dataflow.analysis.Store
Store.FlowRule, Store.Kind -
Constructor Summary
ConstructorsConstructorDescriptionCreate a new BusyExprStore.BusyExprStore(Set<BusyExprValue> busyExprValueSet) Create a new BusyExprStore. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdd expressions to the store, add sub-expressions to the store recursively.booleanCan the objectsaandbbe aliases? Returns a conservative answer (i.e., returnstrueif not enough information is available to determine aliasing).copy()Returns an exact copy of this store.booleanReturns true if this is equal to the given argument.booleanexprContainsVariable(Node expr, Node var) Returns true if the expression contains variable var.inthashCode()voidkillBusyExpr(Node var) Kill expressions if they contain variable var.leastUpperBound(BusyExprStore other) Compute the least upper bound of two stores.voidAdd busy expression e to busy expression value set.toString()visualize(CFGVisualizer<?, BusyExprStore, ?> viz) Delegate visualization responsibility to a visualizer.widenedUpperBound(BusyExprStore previous) Compute an upper bound of two stores that is wider than the least upper bound of the two stores.
-
Constructor Details
-
BusyExprStore
Create a new BusyExprStore.- Parameters:
busyExprValueSet- a set of busy expression abstract values. The parameter is captured and the caller should not retain an alias.
-
BusyExprStore
public BusyExprStore()Create a new BusyExprStore.
-
-
Method Details
-
killBusyExpr
Kill expressions if they contain variable var.- Parameters:
var- a variable
-
exprContainsVariable
Returns true if the expression contains variable var. Note that.equalsis used in the return statement to verify value equality, as the statement decides whether the two nodes have the same value, not represent the same CFG node.- Parameters:
expr- the expression checkedvar- the variable- Returns:
- true if the expression contains the variable
-
putBusyExpr
Add busy expression e to busy expression value set.- Parameters:
e- the busy expression to be added
-
addUseInExpression
Add expressions to the store, add sub-expressions to the store recursively.- Parameters:
e- the expression to be added
-
copy
Description copied from interface:StoreReturns an exact copy of this store.- Specified by:
copyin interfaceStore<BusyExprStore>- Returns:
- an exact copy of this store
-
leastUpperBound
Description copied from interface:StoreCompute 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:
leastUpperBoundin interfaceStore<BusyExprStore>
- Does not change
-
widenedUpperBound
Description copied from interface:StoreCompute 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.previousmust 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:
widenedUpperBoundin interfaceStore<BusyExprStore>- Parameters:
previous- must be the previous store
- Does not change
-
canAlias
Description copied from interface:StoreCan the objectsaandbbe aliases? Returns a conservative answer (i.e., returnstrueif not enough information is available to determine aliasing).- Specified by:
canAliasin interfaceStore<BusyExprStore>
-
visualize
Description copied from interface:StoreDelegate visualization responsibility to a visualizer.- Specified by:
visualizein interfaceStore<BusyExprStore>- Parameters:
viz- the visualizer to visualize this store- Returns:
- the String representation of this store
-
toString
-
equals
Description copied from interface:StoreReturns true if this is equal to the given argument.- Specified by:
equalsin interfaceStore<BusyExprStore>- Overrides:
equalsin classObject- Parameters:
obj- the object to compare against this- Returns:
- true if this is equal to the given argument
-
hashCode
public int hashCode()
-