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, 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, 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, withNodeSourcePosition
public 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.LIRLowerable
public static org.graalvm.word.WordBase stackValue(long numElements, long elementSize, StackValueNode.StackSlotIdentity slotIdentifier)