# HG changeset patch # User Bernhard Urban # Date 1380705381 -7200 # Node ID fbcde297f87a545607dd16c5a9b8d998dd3b8d83 # Parent 7763a42d1658f85034e803d9202a85d509c5c357 NewMemoryAwareScheudling: process loop a second time in order to compute the loop exists correctly with the new merged state diff -r 7763a42d1658 -r fbcde297f87a graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Wed Oct 02 13:32:30 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Wed Oct 02 11:16:21 2013 +0200 @@ -250,18 +250,16 @@ @Override protected List> processLoop(Loop loop, Map state) { - LoopInfo> info = ReentrantBlockIterator.processLoop(this, loop, new HashMap<>(state)); + LoopInfo> info = ReentrantBlockIterator.processLoop(this, loop, cloneState(state)); assert loop.header.getBeginNode() instanceof LoopBeginNode; Map headerState = merge(loop.header, info.endStates); - // getBlockToKillMap().put(loop.header, headerState); + // second iteration, for computing information at loop exits + info = ReentrantBlockIterator.processLoop(this, loop, cloneState(headerState)); int i = 0; for (Block exit : loop.exits) { Map exitState = info.exitStates.get(i++); - for (LocationIdentity key : headerState.keySet()) { - exitState.put(key, headerState.get(key)); - } Node begin = exit.getBeginNode(); assert begin instanceof LoopExitNode;