Class TransferInput<V extends AbstractValue<V>,S extends Store<S>>
- Type Parameters:
V- type of the abstract value that is trackedS- the store type used in the analysis
- All Implemented Interfaces:
org.plumelib.util.UniqueId
TransferInput is used as the input type of the individual transfer functions of a ForwardTransferFunction or a BackwardTransferFunction. It also contains a reference to
the node to which the transfer function will be applied.
A TransferInput contains one or two stores. If two stores are present, one belongs to
"then", and the other to "else".
-
Field Summary
FieldsModifier and TypeFieldDescriptionThe corresponding analysis class to get intermediate flow results.The "else" result store (ornullif none is present).The corresponding node.The "then" result store (ornullif none is present). -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedTransferInput(TransferInput<V, S> from) Copy constructor.Create aTransferInput, given a store and a node-value mapping.Create aTransferInput, given two stores and a node-value mapping.TransferInput(Node n, Analysis<V, S, ?> analysis, TransferResult<V, S> to) Create aTransferInput, given aTransferResultand a node-value mapping. -
Method Summary
Modifier and TypeMethodDescriptionbooleanReturnstrueif and only if this transfer input contains two stores that are potentially not equal.copy()Returns an exact copy of this store.booleanReturns the result store produced if theNodethis result belongs to evaluates tofalse.getNode()Returns theNodefor thisTransferInput.Returns the regular result store produced if no exception is thrown by theNodecorresponding to this transfer function result.Returns the result store produced if theNodethis result belongs to evaluates totrue.longgetUid()Returns the abstract value of noden, which is required to be a "sub-node" (that is, a direct or indirect child) of the node this transfer input is associated with.inthashCode()leastUpperBound(TransferInput<V, S> other) Compute the least upper bound of two stores.toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.plumelib.util.UniqueId
getClassAndUid
-
Field Details
-
Constructor Details
-
TransferInput
Create aTransferInput, given aTransferResultand a node-value mapping.Aliasing: The stores returned by any methods of
towill be stored internally and are not allowed to be used elsewhere. Full control of them is transferred to this object.The node-value mapping
nodeValuesis provided by the analysis and is only read from within thisTransferInput. -
TransferInput
Create aTransferInput, given a store and a node-value mapping.Aliasing: The store
swill be stored internally and is not allowed to be used elsewhere. Full control oversis transferred to this object.The node-value mapping
nodeValuesis provided by the analysis and is only read from within thisTransferInput. -
TransferInput
Create aTransferInput, given two stores and a node-value mapping.Aliasing: The two stores
s1ands2will be stored internally and are not allowed to be used elsewhere. Full control of them is transferred to this object. -
TransferInput
Copy constructor.- Parameters:
from- aTransferInputto copy
-
-
Method Details
-
getUid
public long getUid(@UnknownInitialization TransferInput<V extends AbstractValue<V>, S extends Store<S>> this) - Specified by:
getUidin interfaceorg.plumelib.util.UniqueId
-
getNode
Returns theNodefor thisTransferInput.- Returns:
- the
Nodefor thisTransferInput
-
getValueOfSubNode
Returns the abstract value of noden, which is required to be a "sub-node" (that is, a direct or indirect child) of the node this transfer input is associated with. Furthermore,ncannot be a l-value node. Returnsnullif no value is available.- Parameters:
n- a node- Returns:
- the abstract value of node
n, ornullif no value is available
-
getRegularStore
Returns the regular result store produced if no exception is thrown by theNodecorresponding to this transfer function result.- Returns:
- the regular result store produced if no exception is thrown by the
Nodecorresponding to this transfer function result
-
getThenStore
Returns the result store produced if theNodethis result belongs to evaluates totrue.- Returns:
- the result store produced if the
Nodethis result belongs to evaluates totrue
-
getElseStore
Returns the result store produced if theNodethis result belongs to evaluates tofalse.- Returns:
- the result store produced if the
Nodethis result belongs to evaluates tofalse
-
containsTwoStores
public boolean containsTwoStores()Returnstrueif and only if this transfer input contains two stores that are potentially not equal. Note that the resulttruedoes not imply thatgetRegularStorecannot be called (or vice versa forfalse). Rather, it indicates thatgetThenStoreorgetElseStorecan be used to give more precise results. Otherwise, if the result isfalse, then all three methodsgetRegularStore,getThenStore, andgetElseStorereturn equivalent stores.- Returns:
trueif and only if this transfer input contains two stores that are potentially not equal
-
copy
Returns an exact copy of this store.- Returns:
- an exact copy of this store
-
leastUpperBound
Compute the least upper bound of two stores.Important: This method must fulfill the same contract as
leastUpperBoundofStore.- Parameters:
other- a transfer input- Returns:
- the least upper bound of this and
other
-
equals
-
hashCode
public int hashCode() -
toString
-