public abstract class UnsafeAccessNode extends FixedWithNextNode implements Canonicalizable
Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
protected Kind |
accessKind |
protected LocationIdentity |
locationIdentity |
(package private) ValueNode |
object |
(package private) ValueNode |
offset |
static NodeClass<UnsafeAccessNode> |
TYPE |
nextNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
UnsafeAccessNode(NodeClass<? extends UnsafeAccessNode> c,
Stamp stamp,
ValueNode object,
ValueNode offset,
Kind accessKind,
LocationIdentity locationIdentity) |
| Modifier and Type | Method and Description |
|---|---|
Kind |
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,
LocationIdentity identity) |
protected abstract ValueNode |
cloneAsFieldAccess(ResolvedJavaField field) |
LocationIdentity |
getLocationIdentity() |
ValueNode |
object() |
ValueNode |
offset() |
asNode, next, setNextasConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputspublic static final NodeClass<UnsafeAccessNode> TYPE
protected final Kind accessKind
protected final LocationIdentity locationIdentity
protected UnsafeAccessNode(NodeClass<? extends UnsafeAccessNode> c, Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity)
public LocationIdentity getLocationIdentity()
public Kind accessKind()
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 MetaAccessProviderprotected abstract ValueNode cloneAsFieldAccess(ResolvedJavaField field)
protected abstract ValueNode cloneAsArrayAccess(ValueNode location, LocationIdentity identity)