public final class HubGetClassNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode
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.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberableCanonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>| Modifier and Type | Field and Description |
|---|---|
protected ValueNode |
hub |
static NodeClass<HubGetClassNode> |
TYPE |
guardNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, 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()
Check whether a conversion is lossless.
|
void |
lower(LoweringTool tool)
Expand this node into lower level nodes expressing the same semantics.
|
static Class<?> |
readClass(KlassPointer hub) |
Constant |
reverse(Constant c,
ConstantReflectionProvider constantReflection) |
getGuard, setGuardasNodeasConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, 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, verifyInputsclone, finalize, getClass, notify, notifyAll, wait, wait, waitasNode, preservesOrder, preservesOrderasNodepublic static final NodeClass<HubGetClassNode> TYPE
public HubGetClassNode(MetaAccessProvider metaAccess, ValueNode hub)
public 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 lower(LoweringTool tool)
Lowerablepublic 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()
ConvertNodeisLossless in interface ConvertNode