public final class HubGetClassNode extends FloatingNode implements Lowerable, Canonicalizable, ConvertNode, HubGetClassNodeInterface
Klass::_java_mirror and incorporate non-null type information into stamp. This is
also used by ClassGetHubNode to eliminate chains of klass._java_mirror._klass.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 |
|---|---|
protected ValueNode |
hub |
static NodeClass<HubGetClassNode> |
TYPE |
EMPTY_ARRAY, stampNODE_LIST, NOT_ITERABLE, TRACK_CREATION_POSITION, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
HubGetClassNode(MetaAccessProvider metaAccess,
ValueNode hub) |
| Modifier and Type | Method and Description |
|---|---|
Node |
canonical(CanonicalizerTool tool)
Implementations of this method can provide local optimizations like constant folding and
strength reduction.
|
Constant |
convert(Constant c,
ConstantReflectionProvider constantReflection) |
ValueNode |
getHub() |
ValueNode |
getValue() |
boolean |
isLossless()
Any concrete Klass* has a corresponding
Class. |
boolean |
mayNullCheckSkipConversion()
Checks whether a null check may skip the conversion.
|
static Class<?> |
readClass(KlassPointer hub) |
Constant |
reverse(Constant c,
ConstantReflectionProvider constantReflection) |
asConstant, asJavaConstant, asNode, asSerializableConstant, checkReplaceAtUsagesInvariants, getStackKind, graph, hasUsagesOtherThan, inferStamp, 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, verify, verifyEdges, verifyInputs, verifySourcePosition, withNodeSourcePositionclone, equals, getClass, notify, notifyAll, wait, wait, waitpreservesOrder, preservesOrderasNodepublic static final NodeClass<HubGetClassNode> TYPE
protected ValueNode hub
public HubGetClassNode(MetaAccessProvider metaAccess,
ValueNode hub)
public ValueNode getHub()
getHub in interface HubGetClassNodeInterfacepublic 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 static Class<?> readClass(KlassPointer hub)
public ValueNode getValue()
getValue in interface ConvertNodepublic Constant convert(Constant c,
ConstantReflectionProvider constantReflection)
convert in interface ConvertNodepublic Constant reverse(Constant c,
ConstantReflectionProvider constantReflection)
reverse in interface ConvertNodepublic boolean isLossless()
Class.isLossless in interface ConvertNodepublic boolean mayNullCheckSkipConversion()
ConvertNodemayNullCheckSkipConversion in interface ConvertNode