Mercurial > hg > graal-compiler
changeset 5847:d6257bd5e7f2
Make ReadEliminationPhase Value proxy aware now that FLoatingRead keeps loop closed form
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 17 Jul 2012 23:57:18 +0200 |
parents | da0eff406c2c |
children | 843af0a72913 |
files | graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/ReadEliminationPhase.java |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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(); }