src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/FixedValueAnchorNode.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.nodes/src/org/graalvm/compiler/nodes/extended/FixedValueAnchorNode.java

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/FixedValueAnchorNode.java

Print this page

        

*** 23,58 **** package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.FixedWithNextNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.spi.LIRLowerable; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.compiler.nodes.spi.ValueProxy; @NodeInfo(cycles = CYCLES_0, size = SIZE_0) ! public final class FixedValueAnchorNode extends FixedWithNextNode implements LIRLowerable, ValueProxy { public static final NodeClass<FixedValueAnchorNode> TYPE = NodeClass.create(FixedValueAnchorNode.class); @Input ValueNode object; public ValueNode object() { return object; } public FixedValueAnchorNode(ValueNode object) { super(TYPE, object.stamp()); this.object = object; } @Override public boolean inferStamp() { return updateStamp(object.stamp()); } @NodeIntrinsic public static native Object getObject(Object object); --- 23,70 ---- package org.graalvm.compiler.nodes.extended; import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0; import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0; + import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.FixedWithNextNode; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.spi.LIRLowerable; import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool; import org.graalvm.compiler.nodes.spi.ValueProxy; @NodeInfo(cycles = CYCLES_0, size = SIZE_0) ! public final class FixedValueAnchorNode extends FixedWithNextNode implements LIRLowerable, ValueProxy, GuardingNode { public static final NodeClass<FixedValueAnchorNode> TYPE = NodeClass.create(FixedValueAnchorNode.class); @Input ValueNode object; + private Stamp predefinedStamp; public ValueNode object() { return object; } public FixedValueAnchorNode(ValueNode object) { super(TYPE, object.stamp()); this.object = object; } + public FixedValueAnchorNode(ValueNode object, Stamp predefinedStamp) { + super(TYPE, predefinedStamp); + this.object = object; + this.predefinedStamp = predefinedStamp; + } + @Override public boolean inferStamp() { + if (predefinedStamp == null) { return updateStamp(object.stamp()); + } else { + return false; + } } @NodeIntrinsic public static native Object getObject(Object object);
*** 64,69 **** --- 76,86 ---- @Override public ValueNode getOriginalNode() { return object; } + @Override + public GuardingNode getGuard() { + return this; + } + }
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/FixedValueAnchorNode.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File