--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/VirtualizerTool.java 2017-11-03 23:57:21.448013383 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/VirtualizerTool.java 2017-11-03 23:57:21.119998705 -0700 @@ -25,6 +25,7 @@ import java.util.List; import org.graalvm.compiler.debug.DebugContext; +import org.graalvm.compiler.debug.GraalError; import org.graalvm.compiler.graph.Node; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.java.MonitorIdNode; @@ -91,9 +92,17 @@ * * @param index the index to be set. * @param value the new value for the given index. - * @param unsafe if true, then mismatching value {@link JavaKind}s will be accepted. - */ - void setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value, boolean unsafe); + * @param accessKind the kind of the store which might be different than + * {@link VirtualObjectNode#entryKind(int)}. + * @return true if the operation was permitted + */ + boolean setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value, JavaKind accessKind, long offset); + + default void setVirtualEntry(VirtualObjectNode virtualObject, int index, ValueNode value) { + if (!setVirtualEntry(virtualObject, index, value, null, 0)) { + throw new GraalError("unexpected failure when updating virtual entry"); + } + } ValueNode getEntry(VirtualObjectNode virtualObject, int index);