diff graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java @ 7370:39a4192ae632

Experiment with new block order for LSRA.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Mon, 14 Jan 2013 16:52:44 +0100
parents 9f69799a1768
children 741ceb12ff7d
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Mon Jan 14 14:19:49 2013 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Mon Jan 14 16:52:44 2013 +0100
@@ -241,11 +241,22 @@
 
             public void run() {
                 for (Block b : lir.linearScanOrder()) {
-                    lirGenerator.doBlock(b);
+                    emitBlock(b);
                 }
 
                 Debug.dump(lir, "After LIR generation");
             }
+
+            private void emitBlock(Block b) {
+                if (lir.lir(b) == null) {
+                    for (Block pred : b.getPredecessors()) {
+                        if (!b.isLoopHeader() || !pred.isLoopEnd()) {
+                            emitBlock(pred);
+                        }
+                    }
+                    lirGenerator.doBlock(b);
+                }
+            }
         });
 
         Debug.scope("Allocator", new Runnable() {