public final class ClassGetHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode
Class::_klass to get the hub for a Class. This node mostly exists
to replace _klass._java_mirror._klass with _klass. The constant folding could be
handled by
ReadNode.canonicalizeRead(ValueNode, AddressNode, LocationIdentity, CanonicalizerTool).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 |
clazz |
(package private) StampProvider |
stampProvider |
static NodeClass<ClassGetHubNode> |
TYPE |
guardNODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges| Constructor and Description |
|---|
ClassGetHubNode(StampProvider stampProvider,
ValueNode clazz) |
ClassGetHubNode(StampProvider stampProvider,
ValueNode clazz,
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.
|
Constant |
convert(Constant c,
ConstantReflectionProvider constantReflection) |
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.
|
boolean |
preservesOrder(Condition op,
Constant value,
ConstantReflectionProvider constantReflection)
Check whether a conversion preserves comparison order against a particular constant value.
|
static KlassPointer |
readClass(Class<?> clazz) |
static KlassPointer |
readClass(Class<?> clazz,
GuardingNode guard) |
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, preservesOrderasNodepublic static final NodeClass<ClassGetHubNode> TYPE
StampProvider stampProvider
public ClassGetHubNode(StampProvider stampProvider, ValueNode clazz)
public ClassGetHubNode(StampProvider stampProvider, ValueNode clazz, ValueNode guard)
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 KlassPointer readClass(Class<?> clazz)
public static KlassPointer readClass(Class<?> clazz, GuardingNode guard)
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 ConvertNodepublic boolean preservesOrder(Condition op, Constant value, ConstantReflectionProvider constantReflection)
ConvertNodepreservesOrder in interface ConvertNodeop - a comparison operator