public final class WordCastNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable
Word.fromAddress(org.graalvm.compiler.nodes.memory.address.AddressNode.Address),
Word.objectToTrackedPointer(java.lang.Object), Word.objectToUntrackedPointer(java.lang.Object) and
Word.toObject() operations. It has an impact on the pointer maps for the GC, so it must
not be scheduled or optimized away.Node.ConstantNodeParameter, Node.EdgeVisitor, Node.IndirectCanonicalization, Node.InjectedNodeParameter, Node.Input, Node.NodeInsertionStackTrace, Node.NodeIntrinsic, Node.NodeIntrinsicFactory, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Ternary<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
static NodeClass<WordCastNode> |
TYPE |
nextEMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Modifier | Constructor and Description |
|---|---|
protected |
WordCastNode(Stamp stamp,
ValueNode input,
boolean trackedPointer) |
| Modifier and Type | Method and Description |
|---|---|
static WordCastNode |
addressToWord(ValueNode input,
JavaKind wordKind) |
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
void |
generate(NodeLIRBuilderTool generator) |
ValueNode |
getInput() |
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
static WordCastNode |
narrowOopToUntrackedWord(ValueNode input,
JavaKind wordKind) |
static WordCastNode |
objectToTrackedPointer(ValueNode input,
JavaKind wordKind) |
static WordCastNode |
objectToUntrackedPointer(ValueNode input,
JavaKind wordKind) |
static WordCastNode |
wordToNarrowObject(ValueNode input,
NarrowOopStamp stamp) |
static WordCastNode |
wordToObject(ValueNode input,
JavaKind wordKind) |
static WordCastNode |
wordToObjectNonNull(ValueNode input,
JavaKind wordKind) |
asFixedWithNextNode, next, setNextasFixedNode, verifyasConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, isAllowedUsageType, isConstant, isConstantPredicate, isDefaultConstant, isIllegalConstant, isJavaConstant, isNullConstant, isSerializableConstant, recursivelyDataFlowEqualsUpTo, setStamp, stamp, updateStamp, updateUsagesInterfaceafterClone, applyInputs, applySuccessors, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearNodeSourcePosition, clearSuccessors, copyWithInputs, copyWithInputs, dataFlowEquals, dynamicNodeSizeEstimate, estimatedNodeCycles, estimatedNodeSize, fail, formatTo, getCreationPosition, getDebug, getDebugProperties, getDebugProperties, getInsertionPosition, getNodeClass, getNodeSourcePosition, getOptions, getUsageCount, hasExactlyOneUsage, hashCode, hasMoreThanOneUsage, hasNoUsages, hasOnlyUsagesOfType, hasUsages, hasUsagesOfType, inputPositions, inputs, isAlive, isDeleted, isUnregistered, markDeleted, maybeNotifyZeroUsages, modCount, predecessor, pushInputs, removeUsage, replaceAllInputs, replaceAndDelete, replaceAtAllUsages, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceAtUsagesAndDelete, replaceAtUsagesAndDelete, replaceFirstInput, replaceFirstSuccessor, safeDelete, setCreationPosition, setInsertionPosition, setNodeSourcePosition, singleUsage, successorPositions, successors, toString, toString, updateNodeSourcePosition, updatePredecessor, updateUsages, usages, valueEquals, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitasFixedNodeasNodepublic static final NodeClass<WordCastNode> TYPE
public static WordCastNode wordToObject(ValueNode input, JavaKind wordKind)
public static WordCastNode wordToObjectNonNull(ValueNode input, JavaKind wordKind)
public static WordCastNode wordToNarrowObject(ValueNode input, NarrowOopStamp stamp)
public static WordCastNode addressToWord(ValueNode input, JavaKind wordKind)
public static WordCastNode objectToTrackedPointer(ValueNode input, JavaKind wordKind)
public static WordCastNode objectToUntrackedPointer(ValueNode input, JavaKind wordKind)
public static WordCastNode narrowOopToUntrackedWord(ValueNode input, JavaKind wordKind)
public ValueNode getInput()
public boolean inferStamp()
ValueNodeValueNode if they need to recompute
their stamp if their inputs change. A typical implementation will compute the stamp and pass
it to ValueNode.updateStamp(Stamp), whose return value can be used as the result of this
method.inferStamp in class ValueNodepublic 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 MetaAccessProviderpublic void generate(NodeLIRBuilderTool generator)
generate in interface LIRLowerable