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 for 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
Modifier and TypeFieldDescriptionThe corresponding analysis class to get intermediate flow results.The 'else' result store (ornull
if none is present).The corresponding node.The 'then' result store (ornull
if none is present). -
Constructor Summary
ModifierConstructorDescriptionprotected
TransferInput
(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 aTransferResult
and a node-value mapping. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Returnstrue
if and only if this transfer input contains two stores that are potentially not equal.copy()
Returns an exact copy of this store.boolean
Returns the result store produced if theNode
this result belongs to evaluates tofalse
.getNode()
Returns theNode
for thisTransferInput
.Returns the regular result store produced if no exception is thrown by theNode
corresponding to this transfer function result.Returns the result store produced if theNode
this result belongs to evaluates totrue
.long
getUid()
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.int
hashCode()
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, wait
Methods inherited from interface org.plumelib.util.UniqueId
getClassAndUid
-
Field Details
-
Constructor Details
-
TransferInput
Create aTransferInput
, given aTransferResult
and a node-value mapping.Aliasing: The stores returned by any methods of
to
will be stored internally and are not allowed to be used elsewhere. Full control of them is transferred to this object.The node-value mapping
nodeValues
is 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
s
will be stored internally and is not allowed to be used elsewhere. Full control overs
is transferred to this object.The node-value mapping
nodeValues
is 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
s1
ands2
will 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
- aTransferInput
to copy
-
-
Method Details
-
getUid
public long getUid(@UnknownInitialization TransferInput<V extends AbstractValue<V>, S extends Store<S>> this) - Specified by:
getUid
in interfaceorg.plumelib.util.UniqueId
-
getNode
Returns theNode
for thisTransferInput
.- Returns:
- the
Node
for 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,n
cannot be a l-value node. Returnsnull
if no value is available.- Parameters:
n
- a node- Returns:
- the abstract value of node
n
, ornull
if no value is available
-
getRegularStore
Returns the regular result store produced if no exception is thrown by theNode
corresponding to this transfer function result.- Returns:
- the regular result store produced if no exception is thrown by the
Node
corresponding to this transfer function result
-
getThenStore
Returns the result store produced if theNode
this result belongs to evaluates totrue
.- Returns:
- the result store produced if the
Node
this result belongs to evaluates totrue
-
getElseStore
Returns the result store produced if theNode
this result belongs to evaluates tofalse
.- Returns:
- the result store produced if the
Node
this result belongs to evaluates tofalse
-
containsTwoStores
public boolean containsTwoStores()Returnstrue
if and only if this transfer input contains two stores that are potentially not equal. Note that the resulttrue
does not imply thatgetRegularStore
cannot be called (or vice versa forfalse
). Rather, it indicates thatgetThenStore
orgetElseStore
can be used to give more precise results. Otherwise, if the result isfalse
, then all three methodsgetRegularStore
,getThenStore
, andgetElseStore
return equivalent stores.- Returns:
true
if 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
leastUpperBound
ofStore
.- Parameters:
other
- a transfer input- Returns:
- the least upper bound of this and
other
-
equals
-
hashCode
public int hashCode() -
toString
-