changeset 6307:d7f67808f970

Create ValueProxy nodes where necessary during ReadElimination
author Gilles Duboscq <duboscq@ssw.jku.at>
date Mon, 03 Sep 2012 12:52:22 +0200
parents 2a819543cc45
children 1bb742086acd
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ReadEliminationPhase.java
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ReadEliminationPhase.java	Thu Aug 30 15:33:08 2012 +0200
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ReadEliminationPhase.java	Mon Sep 03 12:52:22 2012 +0200
@@ -27,6 +27,7 @@
 import com.oracle.graal.debug.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
+import com.oracle.graal.nodes.PhiNode.PhiType;
 import com.oracle.graal.nodes.extended.*;
 
 public class ReadEliminationPhase extends Phase {
@@ -81,7 +82,10 @@
             return exisiting;
         }
         if (lastLocationAccess instanceof ValueProxyNode) {
-            return getValue(n, ((ValueProxyNode) lastLocationAccess).value(), nodeMap);
+            ValueProxyNode proxy = (ValueProxyNode) lastLocationAccess;
+            ValueNode value = getValue(n, proxy.value(), nodeMap);
+            assert proxy.type() == PhiType.Value;
+            return lastLocationAccess.graph().add(new ValueProxyNode(value, proxy.proxyPoint(), PhiType.Value));
         }
         if (lastLocationAccess instanceof WriteNode) {
             return ((WriteNode) lastLocationAccess).value();