public final class StackValueNode
extends org.graalvm.compiler.nodes.FixedWithNextNode
implements org.graalvm.compiler.nodes.spi.LIRLowerable, org.graalvm.compiler.graph.IterableNodeType
| Modifier and Type | Class and Description |
|---|---|
protected static class |
StackValueNode.StackSlotHolder |
static class |
StackValueNode.StackSlotIdentity |
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| Modifier and Type | Field and Description |
|---|---|
protected int |
size |
protected StackValueNode.StackSlotIdentity |
slotIdentity
All nodes with the same identity get the same stack slot assigned.
|
protected StackValueNode.StackSlotHolder |
stackSlotHolder
We need to make sure that the stack block is reserved only once, even when compiler
optimizations such as loop unrolling duplicate the actual
StackValueNode. |
static org.graalvm.compiler.graph.NodeClass<StackValueNode> |
TYPE |
| Constructor and Description |
|---|
StackValueNode(long numElements,
long elementSize,
StackValueNode.StackSlotIdentity slotIdentity) |
| Modifier and Type | Method and Description |
|---|---|
void |
generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen) |
static org.graalvm.word.WordBase |
stackValue(long numElements,
long elementSize,
StackValueNode.StackSlotIdentity slotIdentifier) |
asConstant, asJavaConstant, asSerializableConstant, getStackKind, graph, hasUsagesOtherThan, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isJavaConstant, isNullConstant, isSerializableConstant, 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, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasUsages, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, simplify, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionpublic static final org.graalvm.compiler.graph.NodeClass<StackValueNode> TYPE
protected final int size
protected final StackValueNode.StackSlotIdentity slotIdentity
protected StackValueNode.StackSlotHolder stackSlotHolder
StackValueNode. While the
node itself is cloned, this holder object is not cloned (it is a shallow object copy). The
holders are created by the StackValuePhase.public StackValueNode(long numElements,
long elementSize,
StackValueNode.StackSlotIdentity slotIdentity)
public void generate(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool gen)
generate in interface org.graalvm.compiler.nodes.spi.LIRLowerablepublic static org.graalvm.word.WordBase stackValue(long numElements,
long elementSize,
StackValueNode.StackSlotIdentity slotIdentifier)