changeset 10089:97e8cabe9064

fix canonicalization of UnsafeStoreNode: preserve stateAfter
author Andreas Woess <andreas.woess@jku.at>
date Wed, 19 Jun 2013 15:29:37 +0200
parents 9d0c16df0bc7
children ae6f0c381087 cd63140aaad7
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java	Wed Jun 19 15:07:39 2013 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java	Wed Jun 19 15:29:37 2013 +0200
@@ -26,7 +26,6 @@
 import static com.oracle.graal.graph.UnsafeAccess.*;
 
 import com.oracle.graal.api.meta.*;
-import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.java.*;
 import com.oracle.graal.nodes.spi.*;
@@ -102,8 +101,9 @@
             if (constantOffset != 0) {
                 int intDisplacement = (int) (constantOffset + displacement());
                 if (constantOffset == intDisplacement) {
-                    Graph graph = this.graph();
-                    return graph.add(new UnsafeStoreNode(this.stamp(), object(), intDisplacement, graph.unique(ConstantNode.forInt(0, graph)), value(), accessKind()));
+                    UnsafeStoreNode unsafeStoreNode = graph().add(new UnsafeStoreNode(stamp(), object(), intDisplacement, ConstantNode.forInt(0, graph()), value(), accessKind()));
+                    unsafeStoreNode.setStateAfter(stateAfter());
+                    return unsafeStoreNode;
                 }
             } else if (object().stamp() instanceof ObjectStamp) { // TODO (gd) remove that once
                                                                   // UnsafeAccess only have an
@@ -113,7 +113,9 @@
                     ResolvedJavaType receiverType = receiverStamp.type();
                     ResolvedJavaField field = receiverType.findInstanceFieldWithOffset(displacement());
                     if (field != null) {
-                        return this.graph().add(new StoreFieldNode(object(), field, value()));
+                        StoreFieldNode storeFieldNode = graph().add(new StoreFieldNode(object(), field, value()));
+                        storeFieldNode.setStateAfter(stateAfter());
+                        return storeFieldNode;
                     }
                 }
             }