# HG changeset patch # User Thomas Wuerthinger # Date 1433189674 -7200 # Node ID 645f170013a451083414ff695412c465e9d2ebf0 # Parent 7eb156f30b61168d373f03ef030559a011719398 Fix in the scheduler for proxy node handling. diff -r 7eb156f30b61 -r 645f170013a4 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 Mon Jun 01 22:13:10 2015 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Mon Jun 01 22:14:34 2015 +0200 @@ -658,18 +658,23 @@ stack.push(input); } } + } else if (current instanceof ProxyNode) { + ProxyNode proxyNode = (ProxyNode) current; + for (Node input : proxyNode.inputs()) { + if (input != proxyNode.proxyPoint()) { + stack.push(input); + } + } + } else if (current instanceof FrameState) { + for (Node input : current.inputs()) { + if (input instanceof StateSplit && ((StateSplit) input).stateAfter() == current) { + // Ignore the cycle. + } else { + stack.push(input); + } + } } else { - if (current instanceof FrameState) { - for (Node input : current.inputs()) { - if (input instanceof StateSplit && ((StateSplit) input).stateAfter() == current) { - // Ignore the cycle. - } else { - stack.push(input); - } - } - } else { - current.pushInputs(stack); - } + current.pushInputs(stack); } } else { @@ -683,7 +688,7 @@ for (Node input : current.inputs()) { Block inputEarliest = nodeToBlock.get(input); if (inputEarliest == null) { - assert current instanceof FrameState && input instanceof StateSplit && ((StateSplit) input).stateAfter() == current; + assert current instanceof FrameState && input instanceof StateSplit && ((StateSplit) input).stateAfter() == current : current; } else { assert inputEarliest != null; if (inputEarliest.getEndNode() == input) {