public abstract class UnsafeAccessNode extends FixedWithNextNode implements Canonicalizable, OrderedMemoryAccess, MemoryAccess
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>| Modifier and Type | Field and Description |
|---|---|
protected JavaKind |
accessKind |
protected boolean |
forceLocation
Whether the location identity of this node must not change.
|
protected org.graalvm.word.LocationIdentity |
locationIdentity |
static NodeClass<UnsafeAccessNode> |
TYPE |
nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
UnsafeAccessNode(NodeClass<? extends UnsafeAccessNode> c,
Stamp stamp,
ValueNode object,
ValueNode offset,
JavaKind accessKind,
org.graalvm.word.LocationIdentity locationIdentity,
boolean forceLocation,
MemoryOrderMode memoryOrder) |
| Modifier and Type | Method and Description |
|---|---|
JavaKind |
accessKind() |
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
protected abstract ValueNode |
cloneAsArrayAccess(ValueNode location,
org.graalvm.word.LocationIdentity identity,
MemoryOrderMode memOrder) |
protected abstract ValueNode |
cloneAsFieldAccess(Assumptions assumptions,
ResolvedJavaField field,
MemoryOrderMode memOrder) |
org.graalvm.word.LocationIdentity |
getLocationIdentity() |
MemoryOrderMode |
getMemoryOrder()
Retrieves the node's required memory ordering.
|
boolean |
isCanonicalizable() |
boolean |
isLocationForced() |
ValueNode |
object() |
ValueNode |
offset() |
asFixedWithNextNode, 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, waitordersMemoryAccessesgetLastLocationAccess, setLastLocationAccessasNodeasFixedNodepublic static final NodeClass<UnsafeAccessNode> TYPE
protected final JavaKind accessKind
protected final org.graalvm.word.LocationIdentity locationIdentity
protected final boolean forceLocation
protected UnsafeAccessNode(NodeClass<? extends UnsafeAccessNode> c, Stamp stamp, ValueNode object, ValueNode offset, JavaKind accessKind, org.graalvm.word.LocationIdentity locationIdentity, boolean forceLocation, MemoryOrderMode memoryOrder)
public org.graalvm.word.LocationIdentity getLocationIdentity()
getLocationIdentity in interface MemoryAccesspublic boolean isLocationForced()
public boolean isCanonicalizable()
public ValueNode object()
public ValueNode offset()
public JavaKind accessKind()
public MemoryOrderMode getMemoryOrder()
OrderedMemoryAccessgetMemoryOrder in interface OrderedMemoryAccesspublic 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 MetaAccessProviderprotected abstract ValueNode cloneAsFieldAccess(Assumptions assumptions, ResolvedJavaField field, MemoryOrderMode memOrder)
protected abstract ValueNode cloneAsArrayAccess(ValueNode location, org.graalvm.word.LocationIdentity identity, MemoryOrderMode memOrder)