public final class DeoptProxyNode
extends org.graalvm.compiler.nodes.calc.FloatingNode
implements org.graalvm.compiler.nodes.spi.LimitedValueProxy, org.graalvm.compiler.graph.Node.ValueNumberable, org.graalvm.compiler.nodes.spi.LIRLowerable, org.graalvm.compiler.graph.spi.Canonicalizable, org.graalvm.compiler.graph.IterableNodeType, org.graalvm.compiler.nodes.spi.ArrayLengthProvider
This is needed to ensure that the values, which are set by the Deoptimizer
at the
deoptimization point, are really read from their locations (and not hold in a temporary register,
etc.)
org.graalvm.compiler.graph.Node.ConstantNodeParameter, org.graalvm.compiler.graph.Node.EdgeVisitor, org.graalvm.compiler.graph.Node.IndirectCanonicalization, org.graalvm.compiler.graph.Node.InjectedNodeParameter, org.graalvm.compiler.graph.Node.Input, org.graalvm.compiler.graph.Node.NodeInsertionStackTrace, org.graalvm.compiler.graph.Node.NodeIntrinsic, org.graalvm.compiler.graph.Node.OptionalInput, org.graalvm.compiler.graph.Node.Successor, org.graalvm.compiler.graph.Node.ValueNumberable
org.graalvm.compiler.graph.spi.Canonicalizable.Binary<T extends org.graalvm.compiler.graph.Node>, org.graalvm.compiler.graph.spi.Canonicalizable.BinaryCommutative<T extends org.graalvm.compiler.graph.Node>, org.graalvm.compiler.graph.spi.Canonicalizable.Ternary<T extends org.graalvm.compiler.graph.Node>, org.graalvm.compiler.graph.spi.Canonicalizable.Unary<T extends org.graalvm.compiler.graph.Node>
Modifier and Type | Field and Description |
---|---|
protected int |
deoptIndex
A unique index for the deoptimization point.
|
protected org.graalvm.compiler.nodes.ValueNode |
proxyPoint
The link to the deoptimization point to prevent rescheduling of this node.
|
static org.graalvm.compiler.graph.NodeClass<DeoptProxyNode> |
TYPE |
protected org.graalvm.compiler.nodes.ValueNode |
value
The original value, e.g.
|
Modifier | Constructor and Description |
---|---|
protected |
DeoptProxyNode(org.graalvm.compiler.nodes.ValueNode value,
org.graalvm.compiler.nodes.ValueNode proxyPoint,
int deoptIndex) |
Modifier and Type | Method and Description |
---|---|
org.graalvm.compiler.graph.Node |
canonical(org.graalvm.compiler.graph.spi.CanonicalizerTool tool) |
static org.graalvm.compiler.nodes.ValueNode |
create(org.graalvm.compiler.nodes.ValueNode value,
org.graalvm.compiler.nodes.ValueNode proxyPoint,
int deoptIndex) |
org.graalvm.compiler.nodes.ValueNode |
findLength(org.graalvm.compiler.nodes.spi.ArrayLengthProvider.FindLengthMode mode,
jdk.vm.ci.meta.ConstantReflectionProvider constantReflection) |
void |
generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen) |
org.graalvm.compiler.nodes.ValueNode |
getOriginalNode() |
boolean |
hasProxyPoint() |
boolean |
inferStamp() |
asConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, 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, replaceAtAllUsages, 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, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePosition
public static final org.graalvm.compiler.graph.NodeClass<DeoptProxyNode> TYPE
protected org.graalvm.compiler.nodes.ValueNode proxyPoint
protected org.graalvm.compiler.nodes.ValueNode value
ParameterNode
protected final int deoptIndex
protected DeoptProxyNode(org.graalvm.compiler.nodes.ValueNode value, org.graalvm.compiler.nodes.ValueNode proxyPoint, int deoptIndex)
public static org.graalvm.compiler.nodes.ValueNode create(org.graalvm.compiler.nodes.ValueNode value, org.graalvm.compiler.nodes.ValueNode proxyPoint, int deoptIndex)
public boolean inferStamp()
inferStamp
in class org.graalvm.compiler.nodes.ValueNode
public org.graalvm.compiler.nodes.ValueNode getOriginalNode()
getOriginalNode
in interface org.graalvm.compiler.nodes.spi.LimitedValueProxy
getOriginalNode
in interface org.graalvm.compiler.nodes.spi.Proxy
public void generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen)
generate
in interface org.graalvm.compiler.nodes.spi.LIRLowerable
public org.graalvm.compiler.graph.Node canonical(org.graalvm.compiler.graph.spi.CanonicalizerTool tool)
canonical
in interface org.graalvm.compiler.graph.spi.Canonicalizable
public boolean hasProxyPoint()
public org.graalvm.compiler.nodes.ValueNode findLength(org.graalvm.compiler.nodes.spi.ArrayLengthProvider.FindLengthMode mode, jdk.vm.ci.meta.ConstantReflectionProvider constantReflection)
findLength
in interface org.graalvm.compiler.nodes.spi.ArrayLengthProvider