# HG changeset patch # User Lukas Stadler # Date 1367223157 -7200 # Node ID e37aca5c2062e245219bf74ea7f012eac0c39574 # Parent d0b3fa50e3062de099883a46a16022970ce5c9de only virtualize StoreIndexedNode if no store check is required diff -r d0b3fa50e306 -r e37aca5c2062 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Tue Apr 30 13:25:05 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java Mon Apr 29 10:12:37 2013 +0200 @@ -73,8 +73,11 @@ ValueNode indexValue = tool.getReplacedValue(index()); int index = indexValue.isConstant() ? indexValue.asConstant().asInt() : -1; if (index >= 0 && index < arrayState.getVirtualObject().entryCount()) { - tool.setVirtualEntry(arrayState, index, value()); - tool.delete(); + ResolvedJavaType componentType = arrayState.getVirtualObject().type().getComponentType(); + if (componentType.isPrimitive() || value.objectStamp().alwaysNull() || componentType.isAssignableFrom(value.objectStamp().type())) { + tool.setVirtualEntry(arrayState, index, value()); + tool.delete(); + } } } }