< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/RawStoreNode.java
Print this page
*** 37,46 ****
--- 37,47 ----
import org.graalvm.compiler.nodes.memory.MemoryCheckpoint;
import org.graalvm.compiler.nodes.spi.Lowerable;
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;
import jdk.vm.ci.meta.Assumptions;
import jdk.vm.ci.meta.JavaConstant;
*** 122,132 ****
if (indexValue.isConstant()) {
long off = indexValue.asJavaConstant().asLong();
int entryIndex = virtual.entryIndexForOffset(off, accessKind());
if (entryIndex != -1) {
JavaKind entryKind = virtual.entryKind(entryIndex);
! boolean canVirtualize = entryKind == accessKind() || entryKind == accessKind().getStackKind();
if (!canVirtualize) {
/*
* Special case: If the entryKind is long, allow arbitrary kinds as long as
* a value of the same kind is already there. This can only happen if some
* other node initialized the entry with a value of a different kind. One
--- 123,133 ----
if (indexValue.isConstant()) {
long off = indexValue.asJavaConstant().asLong();
int entryIndex = virtual.entryIndexForOffset(off, accessKind());
if (entryIndex != -1) {
JavaKind entryKind = virtual.entryKind(entryIndex);
! 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
* a value of the same kind is already there. This can only happen if some
* other node initialized the entry with a value of a different kind. One
< prev index next >