public class WriteNode extends AbstractWriteNode implements LIRLowerableAccess, Simplifiable
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableMemoryKill.NoLocationOnHeapMemoryAccess.BarrierTypeDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring| Modifier and Type | Field and Description |
|---|---|
static NodeClass<WriteNode> |
TYPE |
barrierType, guard, location, usedAsNullCheckdeoptReasonAndAction, deoptSpeculationstateBeforenextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdgesMULTI_KILL_NO_LOCATION, NO_LOCATION| Modifier | Constructor and Description |
|---|---|
|
WriteNode(AddressNode address,
org.graalvm.word.LocationIdentity location,
ValueNode value,
OnHeapMemoryAccess.BarrierType barrierType) |
protected |
WriteNode(NodeClass<? extends WriteNode> c,
AddressNode address,
org.graalvm.word.LocationIdentity location,
org.graalvm.word.LocationIdentity killedLocationIdentity,
ValueNode value,
OnHeapMemoryAccess.BarrierType barrierType) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canNullCheck()
Determines if the memory touch operation represented by this node can use OS level semantics
for representing the null check of the memory location with an operating system level trap.
|
void |
generate(NodeLIRBuilderTool gen) |
Stamp |
getAccessStamp(NodeView view) |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
MemoryOrderMode |
getMemoryOrder()
Retrieves the node's required memory ordering.
|
boolean |
hasSideEffect()
Determines if this node has a side-effect.
|
void |
simplify(SimplifierTool tool) |
isAllowedUsageType, setStateAfter, setValue, stateAfter, valuecanDeoptimize, getAddress, getBarrierType, getGuard, getLastLocationAccess, getLocationIdentity, getUsedAsNullCheck, setAddress, setGuard, setLastLocationAccess, setUsedAsNullCheckgetDeoptReasonAndAction, getDeoptSpeculation, setImplicitDeoptimizationsetStateBefore, stateBeforeasFixedWithNextNode, next, setNextasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitgetAddress, setAddressgetLastLocationAccess, getLocationIdentity, setLastLocationAccessasNodestatesasFixedNodeasMultiMemoryKill, asSingleMemoryKill, isMemoryKill, isMultiMemoryKill, isSingleMemoryKillordersMemoryAccessescanUseAsStateDuringpublic WriteNode(AddressNode address, org.graalvm.word.LocationIdentity location, ValueNode value, OnHeapMemoryAccess.BarrierType barrierType)
protected WriteNode(NodeClass<? extends WriteNode> c, AddressNode address, org.graalvm.word.LocationIdentity location, org.graalvm.word.LocationIdentity killedLocationIdentity, ValueNode value, OnHeapMemoryAccess.BarrierType barrierType)
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablepublic Stamp getAccessStamp(NodeView view)
getAccessStamp in interface LIRLowerableAccessgetAccessStamp in class AbstractWriteNodepublic boolean canNullCheck()
AddressableMemoryAccesscanNullCheck in interface AddressableMemoryAccesspublic boolean hasSideEffect()
StateSplitFrameState nodes.hasSideEffect in interface StateSplithasSideEffect in class AbstractWriteNodepublic org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKillpublic MemoryOrderMode getMemoryOrder()
OrderedMemoryAccessgetMemoryOrder in interface OrderedMemoryAccesspublic void simplify(SimplifierTool tool)
simplify in interface Simplifiable