--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java 2017-08-03 22:42:51.757474001 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java 2017-08-03 22:42:51.659469608 -0700 @@ -39,6 +39,7 @@ import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Virtualizable; import org.graalvm.compiler.nodes.spi.VirtualizerTool; +import org.graalvm.compiler.nodes.type.StampTool; import org.graalvm.compiler.nodes.virtual.VirtualObjectNode; import org.graalvm.word.LocationIdentity; @@ -124,7 +125,7 @@ int entryIndex = virtual.entryIndexForOffset(off, accessKind()); if (entryIndex != -1) { JavaKind entryKind = virtual.entryKind(entryIndex); - boolean canVirtualize = entryKind == accessKind() || entryKind == accessKind().getStackKind(); + boolean canVirtualize = entryKind == accessKind() || (entryKind == accessKind().getStackKind() && !StampTool.typeOrNull(object()).isArray()); if (!canVirtualize) { /* * Special case: If the entryKind is long, allow arbitrary kinds as long as