--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/StoreFieldNode.java 2017-11-03 23:57:18.898899314 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/java/StoreFieldNode.java 2017-11-03 23:57:18.572884725 -0700 @@ -29,7 +29,6 @@ import org.graalvm.compiler.nodeinfo.InputType; import org.graalvm.compiler.nodeinfo.NodeCycles; import org.graalvm.compiler.nodeinfo.NodeInfo; -import org.graalvm.compiler.nodes.ConstantNode; import org.graalvm.compiler.nodes.FrameState; import org.graalvm.compiler.nodes.StateSplit; import org.graalvm.compiler.nodes.ValueNode; @@ -38,7 +37,6 @@ import org.graalvm.compiler.nodes.virtual.VirtualInstanceNode; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; -import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.ResolvedJavaField; /** @@ -90,15 +88,8 @@ VirtualInstanceNode virtual = (VirtualInstanceNode) alias; int fieldIndex = virtual.fieldIndex(field()); if (fieldIndex != -1) { - ValueNode existing = tool.getEntry((VirtualObjectNode) alias, fieldIndex); - if (existing.stamp().isCompatible(value().stamp())) { - tool.setVirtualEntry(virtual, fieldIndex, value(), false); - tool.delete(); - } else { - // stamp of the value is not compatible with the value in the virtualizer - // can only happen with unsafe two slot writes on one slot fields - assert existing instanceof ConstantNode && ((ConstantNode) existing).asConstant().equals(JavaConstant.forIllegal()) : value.stamp() + " vs " + existing.stamp(); - } + tool.setVirtualEntry(virtual, fieldIndex, value()); + tool.delete(); } } }