# HG changeset patch # User Gilles Duboscq # Date 1346669542 -7200 # Node ID d7f67808f970c7b3af7fdef1fa5d075fee521bf1 # Parent 2a819543cc45a302199d65318e48175d90d4c758 Create ValueProxy nodes where necessary during ReadElimination diff -r 2a819543cc45 -r d7f67808f970 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ReadEliminationPhase.java --- 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();