Mercurial > hg > truffle
changeset 10922:1d1675f18e85
Scheduling: add assert about nodes in a block after sorting
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Thu, 01 Aug 2013 17:24:41 +0200 |
parents | b73121a215f7 |
children | 01a0f525ac17 |
files | graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java |
diffstat | 1 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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<ScheduledNode> removeProxies(List<ScheduledNode> list) { + List<ScheduledNode> result = new ArrayList<>(); + for (ScheduledNode n : list) { + if (!(n instanceof ProxyNode)) { + result.add(n); + } + } + return result; + } + + private static List<ScheduledNode> filterSchedulableNodes(List<ScheduledNode> list) { + List<ScheduledNode> result = new ArrayList<>(); + for (ScheduledNode n : list) { + if (!(n instanceof LocalNode) && !(n instanceof PhiNode)) { + result.add(n); + } + } + return result; + } + private static boolean sameOrderForFixedNodes(List<ScheduledNode> fixed, List<ScheduledNode> sorted) { Iterator<ScheduledNode> fixedIterator = fixed.iterator(); Iterator<ScheduledNode> sortedIterator = sorted.iterator();