public class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode, Canonicalizable, OrderedMemoryAccess
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 |
|---|---|
protected boolean |
compressible |
protected JavaKind |
readKind |
static NodeClass<JavaReadNode> |
TYPE |
barrierType, guard, location, usedAsNullCheckdeoptReasonAndAction, deoptSpeculationstateBeforenextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
|
JavaReadNode(JavaKind readKind,
AddressNode address,
org.graalvm.word.LocationIdentity location,
OnHeapMemoryAccess.BarrierType barrierType,
boolean compressible) |
protected |
JavaReadNode(NodeClass<? extends JavaReadNode> c,
Stamp stamp,
JavaKind readKind,
AddressNode address,
org.graalvm.word.LocationIdentity location,
OnHeapMemoryAccess.BarrierType barrierType,
boolean compressible) |
|
JavaReadNode(Stamp stamp,
JavaKind readKind,
AddressNode address,
org.graalvm.word.LocationIdentity location,
OnHeapMemoryAccess.BarrierType barrierType,
boolean compressible) |
| 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.
|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
MemoryOrderMode |
getMemoryOrder()
Retrieves the node's required memory ordering.
|
JavaKind |
getReadKind() |
boolean |
isCompressible() |
canDeoptimize, getAddress, getBarrierType, getGuard, getLastLocationAccess, getLocationIdentity, getUsedAsNullCheck, setAddress, setGuard, setLastLocationAccess, setUsedAsNullCheckgetDeoptReasonAndAction, getDeoptSpeculation, setImplicitDeoptimizationsetStateBefore, stateBeforeasFixedWithNextNode, next, setNextasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, 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, waitasNodeordersMemoryAccessescanUseAsStateDuringstatesasFixedNodepublic static final NodeClass<JavaReadNode> TYPE
protected final JavaKind readKind
protected final boolean compressible
public JavaReadNode(JavaKind readKind,
AddressNode address,
org.graalvm.word.LocationIdentity location,
OnHeapMemoryAccess.BarrierType barrierType,
boolean compressible)
public JavaReadNode(Stamp stamp, JavaKind readKind, AddressNode address, org.graalvm.word.LocationIdentity location, OnHeapMemoryAccess.BarrierType barrierType, boolean compressible)
protected JavaReadNode(NodeClass<? extends JavaReadNode> c, Stamp stamp, JavaKind readKind, AddressNode address, org.graalvm.word.LocationIdentity location, OnHeapMemoryAccess.BarrierType barrierType, boolean compressible)
public boolean canNullCheck()
AddressableMemoryAccesscanNullCheck in interface AddressableMemoryAccesspublic JavaKind getReadKind()
public boolean isCompressible()
public Node canonical(CanonicalizerTool tool)
Canonicalizablenull will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.canonical in interface Canonicalizabletool - provides access to runtime interfaces like MetaAccessProviderpublic MemoryOrderMode getMemoryOrder()
OrderedMemoryAccessgetMemoryOrder in interface OrderedMemoryAccess