Mercurial > hg > graal-compiler
changeset 15284:9b122a4d2e94
correctly schedule loop proxies
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Wed, 23 Apr 2014 10:26:19 +0200 |
parents | 2f1aefd30079 |
children | d9c64f6a11c7 |
files | graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Wed Apr 23 10:26:18 2014 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Wed Apr 23 10:26:19 2014 +0200 @@ -986,13 +986,21 @@ stateAfter = ((StateSplit) i).stateAfter(); } + if (i instanceof LoopExitNode) { + for (ProxyNode proxy : ((LoopExitNode) i).proxies()) { + addToLatestSorting(b, proxy, sortedInstructions, visited, reads, beforeLastLocation); + } + } + for (Node input : i.inputs()) { if (input instanceof FrameState) { if (input != stateAfter) { addUnscheduledToLatestSorting(b, (FrameState) input, sortedInstructions, visited, reads, beforeLastLocation); } } else { - addToLatestSorting(b, (ScheduledNode) input, sortedInstructions, visited, reads, beforeLastLocation); + if (!(i instanceof ProxyNode && input instanceof LoopExitNode)) { + addToLatestSorting(b, (ScheduledNode) input, sortedInstructions, visited, reads, beforeLastLocation); + } } }