public abstract class AbstractWriteNode extends FixedAccessNode implements StateSplit, MemoryCheckpoint.Single, MemoryAccess, GuardingNode
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
MemoryCheckpoint.Multi, MemoryCheckpoint.Single, MemoryCheckpoint.TypeAssertion
HeapAccess.BarrierType
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
protected boolean |
initialization |
(package private) Node |
lastLocationAccess |
(package private) FrameState |
stateAfter |
static NodeClass<AbstractWriteNode> |
TYPE |
(package private) ValueNode |
value |
address, barrierType, guard, location, nullCheck
stateBefore
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Modifier | Constructor and Description |
---|---|
protected |
AbstractWriteNode(NodeClass<? extends AbstractWriteNode> c,
AddressNode address,
LocationIdentity location,
ValueNode value,
HeapAccess.BarrierType barrierType) |
protected |
AbstractWriteNode(NodeClass<? extends AbstractWriteNode> c,
AddressNode address,
LocationIdentity location,
ValueNode value,
HeapAccess.BarrierType barrierType,
boolean initialization) |
protected |
AbstractWriteNode(NodeClass<? extends AbstractWriteNode> c,
AddressNode address,
LocationIdentity location,
ValueNode value,
HeapAccess.BarrierType barrierType,
GuardingNode guard,
boolean initialization) |
Modifier and Type | Method and Description |
---|---|
MemoryNode |
getLastLocationAccess() |
boolean |
hasSideEffect()
Determines if this node has a side-effect.
|
boolean |
isAllowedUsageType(InputType type) |
boolean |
isInitialization()
Returns whether this write is the initialization of the written location.
|
void |
setLastLocationAccess(MemoryNode lla) |
void |
setStateAfter(FrameState x)
Sets the
FrameState corresponding to the state of the JVM after execution of this
node. |
FrameState |
stateAfter()
Gets the
FrameState corresponding to the state of the JVM after execution of this
node. |
ValueNode |
value() |
canDeoptimize, getAddress, getBarrierType, getGuard, getLocationIdentity, getNullCheck, setAddress, setGuard, setNullCheck
setStateBefore, stateBefore
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, inferStamp, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode
states
getLocationIdentity
getLocationIdentity
asNode
canNullCheck
asNode
public static final NodeClass<AbstractWriteNode> TYPE
FrameState stateAfter
Node lastLocationAccess
protected final boolean initialization
protected AbstractWriteNode(NodeClass<? extends AbstractWriteNode> c, AddressNode address, LocationIdentity location, ValueNode value, HeapAccess.BarrierType barrierType)
protected AbstractWriteNode(NodeClass<? extends AbstractWriteNode> c, AddressNode address, LocationIdentity location, ValueNode value, HeapAccess.BarrierType barrierType, boolean initialization)
protected AbstractWriteNode(NodeClass<? extends AbstractWriteNode> c, AddressNode address, LocationIdentity location, ValueNode value, HeapAccess.BarrierType barrierType, GuardingNode guard, boolean initialization)
public FrameState stateAfter()
StateSplit
FrameState
corresponding to the state of the JVM after execution of this
node.stateAfter
in interface StateSplit
public void setStateAfter(FrameState x)
StateSplit
FrameState
corresponding to the state of the JVM after execution of this
node.setStateAfter
in interface StateSplit
public boolean hasSideEffect()
StateSplit
FrameState
nodes.hasSideEffect
in interface StateSplit
public boolean isInitialization()
public boolean isAllowedUsageType(InputType type)
isAllowedUsageType
in class ValueNode
public MemoryNode getLastLocationAccess()
getLastLocationAccess
in interface MemoryAccess
public void setLastLocationAccess(MemoryNode lla)
setLastLocationAccess
in interface MemoryAccess
lla
- the MemoryNode
that represents the last kill of the location