Mercurial > hg > graal-compiler
changeset 9499:e37aca5c2062
only virtualize StoreIndexedNode if no store check is required
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 29 Apr 2013 10:12:37 +0200 |
parents | d0b3fa50e306 |
children | 9cc37ce426cc |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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(); + } } } }