changeset 22438:d94dd15e757a

TraceRA: TraceBuilder: do not remove processed blocks from worklist, just skip them.
author Josef Eisl <josef.eisl@jku.at>
date Mon, 10 Aug 2015 15:46:55 +0200
parents 2a7fbe938296
children 79ea15cd3701
files graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java	Tue Aug 11 11:34:13 2015 +0200
+++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/TraceBuilder.java	Mon Aug 10 15:46:55 2015 +0200
@@ -111,7 +111,9 @@
         while (!worklist.isEmpty()) {
             T block = worklist.poll();
             assert block != null;
-            traces.add(startTrace(block, traces.size()));
+            if (!processed(block)) {
+                traces.add(startTrace(block, traces.size()));
+            }
         }
         return traces;
     }
@@ -127,7 +129,6 @@
             for (T currentBlock = block; currentBlock != null; currentBlock = selectNext(currentBlock)) {
                 Debug.log("add %s (prob: %f)", currentBlock, currentBlock.probability());
                 processed.set(currentBlock.getId());
-                worklist.remove(currentBlock);
                 trace.add(currentBlock);
                 unblock(currentBlock);
                 currentBlock.setLinearScanNumber(blockNumber++);