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.ValueNumberable
Canonicalizable.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 |
guard
NODE_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, setGuard
asNode
asConstant, asJavaConstant, getKind, graph, inferStamp, 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, preservesOrder, preservesOrder
asNode
public static final NodeClass<HubGetClassNode> TYPE
public HubGetClassNode(MetaAccessProvider metaAccess, ValueNode hub)
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
public static Class<?> readClass(KlassPointer hub)
public ValueNode getValue()
getValue
in interface ConvertNode
public Constant convert(Constant c, ConstantReflectionProvider constantReflection)
convert
in interface ConvertNode
public Constant reverse(Constant c, ConstantReflectionProvider constantReflection)
reverse
in interface ConvertNode
public boolean isLossless()
ConvertNode
isLossless
in interface ConvertNode