public class VolatileReadNode extends ReadNode implements SingleMemoryKill, Lowerable
Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>OnHeapMemoryAccess.BarrierTypeDeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring| Modifier and Type | Field and Description |
|---|---|
static NodeClass<VolatileReadNode> |
TYPE |
forceFixedbarrierType, guard, location, nullCheckdeoptReasonAndAction, deoptSpeculationstateBeforenextNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
VolatileReadNode(AddressNode address,
Stamp stamp,
OnHeapMemoryAccess.BarrierType barrierType) |
| Modifier and Type | Method and Description |
|---|---|
FloatingAccessNode |
asFloatingNode() |
boolean |
canFloat()
AccessNodes can float only if their location identities are not ANY_LOCATION.
|
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) |
org.graalvm.word.LocationIdentity |
getKilledLocationIdentity()
This method is used to determine which memory location is killed by this node.
|
canonical, canonicalizeRead, getAccessStamp, isAllowedUsageType, virtualizesetForceFixedcanDeoptimize, getAddress, getBarrierType, getGuard, getLastLocationAccess, getLocationIdentity, getNullCheck, setAddress, setGuard, setLastLocationAccess, setNullCheckgetDeoptReasonAndAction, getDeoptSpeculation, setImplicitDeoptimizationsetStateBefore, stateBeforeasNode, next, setNextasConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, replaceAtAllUsages, replaceAtUsages, setStamp, stamp, updateStampafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, finalize, getClass, notify, notifyAll, wait, wait, waitasNodegetAddress, setAddressgetLastLocationAccess, getLocationIdentity, setLastLocationAccesscanUseAsStateDuringstatesasNodepublic static final NodeClass<VolatileReadNode> TYPE
public VolatileReadNode(AddressNode address, Stamp stamp, OnHeapMemoryAccess.BarrierType barrierType)
public void generate(NodeLIRBuilderTool gen)
generate in interface LIRLowerablegenerate in class ReadNodepublic FloatingAccessNode asFloatingNode()
asFloatingNode in class ReadNodepublic boolean canFloat()
FloatableAccessNodecanFloat in class FloatableAccessNodepublic org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKillLocationIdentity.any() will kill all memory locations.getKilledLocationIdentity in interface SingleMemoryKillpublic boolean canNullCheck()
AddressableMemoryAccesscanNullCheck in interface AddressableMemoryAccesscanNullCheck in class ReadNode