public final class KlassLayoutHelperNode extends FloatingGuardedNode implements Canonicalizable, Lowerable
Klass::_layout_helper
and incorporate any useful stamp information based on any type
information in klass
.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
Modifier and Type | Field and Description |
---|---|
protected HotSpotVMConfig |
config |
protected ValueNode |
klass |
static NodeClass<KlassLayoutHelperNode> |
TYPE |
guard
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
KlassLayoutHelperNode(HotSpotVMConfig config,
ValueNode klass) |
KlassLayoutHelperNode(HotSpotVMConfig config,
ValueNode klass,
ValueNode guard) |
Modifier and Type | Method and Description |
---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
ValueNode |
getHub() |
boolean |
inferStamp()
This method can be overridden by subclasses of
ValueNode if they need to recompute
their stamp if their inputs change. |
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
getGuard, setGuard
asNode
asConstant, asJavaConstant, getKind, graph, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verify, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
asNode
public static final NodeClass<KlassLayoutHelperNode> TYPE
protected final HotSpotVMConfig config
public KlassLayoutHelperNode(HotSpotVMConfig config, ValueNode klass)
public KlassLayoutHelperNode(HotSpotVMConfig config, ValueNode klass, ValueNode guard)
public boolean inferStamp()
ValueNode
ValueNode
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 ValueNode
public Node canonical(CanonicalizerTool tool)
Canonicalizable
null
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 Canonicalizable
tool
- provides access to runtime interfaces like MetaAccessProvider
public void lower(LoweringTool tool)
Lowerable