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
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.ValueNumberableorg.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.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) |
void |
generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen) |
org.graalvm.compiler.nodes.ValueNode |
getOriginalNode() |
boolean |
hasProxyPoint() |
boolean |
inferStamp() |
asConstant, asJavaConstant, getStackKind, graph, hasUsagesOtherThan, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isJavaConstant, isNullConstant, replaceAtUsages, setStamp, stamp, updateStampafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageAt, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasUsages, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionpublic static final org.graalvm.compiler.graph.NodeClass<DeoptProxyNode> TYPE
protected org.graalvm.compiler.nodes.ValueNode proxyPoint
protected org.graalvm.compiler.nodes.ValueNode value
ParameterNodeprotected 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.ValueNodepublic org.graalvm.compiler.nodes.ValueNode getOriginalNode()
getOriginalNode in interface org.graalvm.compiler.nodes.spi.LimitedValueProxygetOriginalNode in interface org.graalvm.compiler.nodes.spi.Proxypublic void generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen)
generate in interface org.graalvm.compiler.nodes.spi.LIRLowerablepublic org.graalvm.compiler.graph.Node canonical(org.graalvm.compiler.graph.spi.CanonicalizerTool tool)
canonical in interface org.graalvm.compiler.graph.spi.Canonicalizablepublic boolean hasProxyPoint()