# HG changeset patch # User Bernhard Urban # Date 1375370681 -7200 # Node ID 1d1675f18e8524a489e16164bb44a6de30892b74 # Parent b73121a215f75e7201117cbe48223d693b482d10 Scheduling: add assert about nodes in a block after sorting diff -r b73121a215f7 -r 1d1675f18e85 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 Thu Aug 01 17:23:31 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Thu Aug 01 17:24:41 2013 +0200 @@ -852,10 +852,32 @@ default: throw new GraalInternalError("unknown scheduling strategy"); } + assert filterSchedulableNodes(blockToNodesMap.get(b)).size() == removeProxies(sortedInstructions).size() : "sorted block does not contain the same amount of nodes: " + + filterSchedulableNodes(blockToNodesMap.get(b)) + " vs. " + removeProxies(sortedInstructions); assert sameOrderForFixedNodes(blockToNodesMap.get(b), sortedInstructions) : "fixed nodes in sorted block are not in the same order"; blockToNodesMap.put(b, sortedInstructions); } + private static List removeProxies(List list) { + List result = new ArrayList<>(); + for (ScheduledNode n : list) { + if (!(n instanceof ProxyNode)) { + result.add(n); + } + } + return result; + } + + private static List filterSchedulableNodes(List list) { + List result = new ArrayList<>(); + for (ScheduledNode n : list) { + if (!(n instanceof LocalNode) && !(n instanceof PhiNode)) { + result.add(n); + } + } + return result; + } + private static boolean sameOrderForFixedNodes(List fixed, List sorted) { Iterator fixedIterator = fixed.iterator(); Iterator sortedIterator = sorted.iterator();