src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ClassGetHubNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ClassGetHubNode.java

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ClassGetHubNode.java

Print this page

        

*** 33,45 **** import org.graalvm.compiler.graph.spi.CanonicalizerTool; import org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp; import org.graalvm.compiler.hotspot.word.KlassPointer; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.ConstantNode; ! import org.graalvm.compiler.nodes.FloatingGuardedNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.calc.ConvertNode; import org.graalvm.compiler.nodes.extended.GetClassNode; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.extended.LoadHubNode; import org.graalvm.compiler.nodes.memory.ReadNode; import org.graalvm.compiler.nodes.memory.address.AddressNode; --- 33,46 ---- import org.graalvm.compiler.graph.spi.CanonicalizerTool; import org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp; import org.graalvm.compiler.hotspot.word.KlassPointer; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.ConstantNode; ! import org.graalvm.compiler.nodes.PiNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.calc.ConvertNode; + import org.graalvm.compiler.nodes.calc.FloatingNode; import org.graalvm.compiler.nodes.extended.GetClassNode; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.extended.LoadHubNode; import org.graalvm.compiler.nodes.memory.ReadNode; import org.graalvm.compiler.nodes.memory.address.AddressNode;
*** 57,76 **** * to replace {@code _klass._java_mirror._klass} with {@code _klass}. The constant folding could be * handled by * {@link ReadNode#canonicalizeRead(ValueNode, AddressNode, LocationIdentity, CanonicalizerTool)}. */ @NodeInfo(cycles = CYCLES_4, size = SIZE_1) ! public final class ClassGetHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode { public static final NodeClass<ClassGetHubNode> TYPE = NodeClass.create(ClassGetHubNode.class); @Input protected ValueNode clazz; public ClassGetHubNode(ValueNode clazz) { ! this(clazz, null); ! } ! ! public ClassGetHubNode(ValueNode clazz, ValueNode guard) { ! super(TYPE, KlassPointerStamp.klass(), (GuardingNode) guard); this.clazz = clazz; } @Override public Node canonical(CanonicalizerTool tool) { --- 58,73 ---- * to replace {@code _klass._java_mirror._klass} with {@code _klass}. The constant folding could be * handled by * {@link ReadNode#canonicalizeRead(ValueNode, AddressNode, LocationIdentity, CanonicalizerTool)}. */ @NodeInfo(cycles = CYCLES_4, size = SIZE_1) ! public final class ClassGetHubNode extends FloatingNode implements Lowerable, Canonicalizable, ConvertNode { public static final NodeClass<ClassGetHubNode> TYPE = NodeClass.create(ClassGetHubNode.class); @Input protected ValueNode clazz; public ClassGetHubNode(ValueNode clazz) { ! super(TYPE, KlassPointerStamp.klass()); this.clazz = clazz; } @Override public Node canonical(CanonicalizerTool tool) {
*** 104,117 **** public void lower(LoweringTool tool) { tool.getLowerer().lower(this, tool); } @NodeIntrinsic ! public static native KlassPointer readClass(Class<?> clazz); ! @NodeIntrinsic ! public static native KlassPointer readClass(Class<?> clazz, GuardingNode guard); @Override public ValueNode getValue() { return clazz; } --- 101,114 ---- public void lower(LoweringTool tool) { tool.getLowerer().lower(this, tool); } @NodeIntrinsic ! public static native KlassPointer readClass(Class<?> clazzNonNull); ! @NodeIntrinsic(PiNode.class) ! public static native KlassPointer piCastNonNull(Object object, GuardingNode anchor); @Override public ValueNode getValue() { return clazz; }
*** 136,145 **** --- 133,150 ---- @Override public boolean isLossless() { return false; } + /** + * There is more than one {@link java.lang.Class} value that has a NULL hub. + */ + @Override + public boolean mayNullCheckSkipConversion() { + return false; + } + @Override public boolean preservesOrder(Condition op, Constant value, ConstantReflectionProvider constantReflection) { assert op == Condition.EQ || op == Condition.NE; ResolvedJavaType exactType = constantReflection.asJavaType(value); return !exactType.isPrimitive();
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ClassGetHubNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File