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.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>
OnHeapMemoryAccess.BarrierType
DeoptimizingNode.DeoptAfter, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptDuring
Modifier and Type | Field and Description |
---|---|
static NodeClass<VolatileReadNode> |
TYPE |
forceFixed
barrierType, guard, location, nullCheck
deoptReasonAndAction, deoptSpeculation
stateBefore
next
NODE_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, virtualize
setForceFixed
canDeoptimize, getAddress, getBarrierType, getGuard, getLastLocationAccess, getLocationIdentity, getNullCheck, setAddress, setGuard, setLastLocationAccess, setNullCheck
getDeoptReasonAndAction, getDeoptSpeculation, setImplicitDeoptimization
setStateBefore, stateBefore
asNode, next, setNext
asConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, replaceAtAllUsages, replaceAtUsages, setStamp, stamp, updateStamp
afterClone, 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, withNodeSourcePosition
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode
getAddress, setAddress
getLastLocationAccess, getLocationIdentity, setLastLocationAccess
canUseAsStateDuring
states
asNode
public static final NodeClass<VolatileReadNode> TYPE
public VolatileReadNode(AddressNode address, Stamp stamp, OnHeapMemoryAccess.BarrierType barrierType)
public void generate(NodeLIRBuilderTool gen)
generate
in interface LIRLowerable
generate
in class ReadNode
public FloatingAccessNode asFloatingNode()
asFloatingNode
in class ReadNode
public boolean canFloat()
FloatableAccessNode
canFloat
in class FloatableAccessNode
public org.graalvm.word.LocationIdentity getKilledLocationIdentity()
SingleMemoryKill
LocationIdentity.any()
will kill all memory locations.getKilledLocationIdentity
in interface SingleMemoryKill
public boolean canNullCheck()
AddressableMemoryAccess
canNullCheck
in interface AddressableMemoryAccess
canNullCheck
in class ReadNode