--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/GuardedValueNode.java 2017-03-20 17:40:25.000000000 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/GuardedValueNode.java 2017-03-20 17:40:25.000000000 -0700 @@ -25,8 +25,6 @@ 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.IterableNodeType; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.graph.spi.Canonicalizable; @@ -49,20 +47,14 @@ * A GuardedValueNode will only go away if its guard is null or {@link StructuredGraph#start()}. */ @NodeInfo(cycles = CYCLES_0, size = SIZE_0) -public final class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy { +public final class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, Canonicalizable, ValueProxy { public static final NodeClass TYPE = NodeClass.create(GuardedValueNode.class); @Input ValueNode object; - protected final Stamp piStamp; - - public GuardedValueNode(ValueNode object, GuardingNode guard, Stamp stamp) { - super(TYPE, computeStamp(stamp, object), guard); - this.object = object; - this.piStamp = stamp; - } public GuardedValueNode(ValueNode object, GuardingNode guard) { - this(object, guard, object.stamp()); + super(TYPE, object.stamp(), guard); + this.object = object; } public ValueNode object() { @@ -78,11 +70,7 @@ @Override public boolean inferStamp() { - return updateStamp(computeStamp(piStamp, object())); - } - - static Stamp computeStamp(Stamp piStamp, ValueNode object) { - return piStamp.improveWith(object.stamp()); + return updateStamp(object().stamp()); } @Override