# HG changeset patch # User Gilles Duboscq # Date 1342562238 -7200 # Node ID d6257bd5e7f2c4f658cbb44d3be4a0e5316fd04a # Parent da0eff406c2cc4951c4ead57d93a0173e2019a3f Make ReadEliminationPhase Value proxy aware now that FLoatingRead keeps loop closed form diff -r da0eff406c2c -r d6257bd5e7f2 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 Tue Jul 17 20:07:53 2012 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ReadEliminationPhase.java Tue Jul 17 23:57:18 2012 +0200 @@ -56,6 +56,9 @@ if (visited.isMarked(lastLocationAccess)) { return true; // dataflow loops must come from Phis assume them ok until proven wrong } + if (lastLocationAccess instanceof ValueProxyNode) { + return isWrites(n, ((ValueProxyNode) lastLocationAccess).value(), visited); + } if (lastLocationAccess instanceof WriteNode) { WriteNode other = (WriteNode) lastLocationAccess; return other.object() == n.object() && other.location() == n.location(); @@ -77,6 +80,9 @@ if (exisiting != null) { return exisiting; } + if (lastLocationAccess instanceof ValueProxyNode) { + return getValue(n, ((ValueProxyNode) lastLocationAccess).value(), nodeMap); + } if (lastLocationAccess instanceof WriteNode) { return ((WriteNode) lastLocationAccess).value(); }