changeset 2759:b72e6638b9e6

Removed the link from BlockBegin to LIRBlock.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Fri, 20 May 2011 16:40:32 +0200
parents 0c5791bc90fb
children 127db58b044e
files graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java graal/GraalCompiler/src/com/sun/c1x/debug/CFGPrinter.java graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java graal/GraalCompiler/src/com/sun/c1x/graph/IR.java graal/GraalCompiler/src/com/sun/c1x/ir/BlockBegin.java graal/GraalGraph/src/com/oracle/graal/graph/Node.java
diffstat 6 files changed, 24 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java	Fri May 20 16:31:31 2011 +0200
+++ b/graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java	Fri May 20 16:40:32 2011 +0200
@@ -84,7 +84,7 @@
                     assignBlock(n);
                     blockBeginNodes.add(n);
                 } else {
-                    // We have a single predecessor => its successor count.
+                    // We have a single predecessor => check its successor count.
                     int successorCount = 0;
                     for (Node succ : singlePred.successors()) {
                         if (succ != null && combinedBitMap.isMarked(succ)) {
--- a/graal/GraalCompiler/src/com/sun/c1x/debug/CFGPrinter.java	Fri May 20 16:31:31 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/debug/CFGPrinter.java	Fri May 20 16:40:32 2011 +0200
@@ -158,9 +158,10 @@
             printHIR(block);
         }
 
-        if (printLIR) {
-            printLIR(block.lirBlock());
-        }
+        // TODO(tw): Add possibility to print LIR.
+        //if (printLIR) {
+        //    printLIR(block.lirBlock());
+        //}
 
         end("block");
     }
--- a/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java	Fri May 20 16:31:31 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java	Fri May 20 16:40:32 2011 +0200
@@ -582,7 +582,7 @@
 
     protected LIRBlock getLIRBlock(Instruction b) {
         assert b instanceof BlockBegin : "only BlockBegin, for now...";
-        return ((BlockBegin) b).lirBlock();
+        return ir.valueToBlock.get(b);
     }
 
     @Override
--- a/graal/GraalCompiler/src/com/sun/c1x/graph/IR.java	Fri May 20 16:31:31 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/graph/IR.java	Fri May 20 16:40:32 2011 +0200
@@ -66,6 +66,8 @@
         this.compilation = compilation;
     }
 
+    public Map<Value, LIRBlock> valueToBlock;
+
     /**
      * Builds the graph, optimizes it, and computes the linear scan block order.
      */
@@ -83,7 +85,8 @@
 
         Schedule schedule = new Schedule(this.compilation.graph);
 
-        computeLinearScanOrder();
+        valueToBlock = computeLinearScanOrder();
+        verifyAndPrint("After linear scan order");
 
         if (C1XOptions.PrintTimers) {
             C1XTimers.HIR_OPTIMIZE.stop();
@@ -100,14 +103,14 @@
         }
     }
 
-    private void computeLinearScanOrder() {
-        if (C1XOptions.GenLIR) {
-            makeLinearScanOrder();
-            verifyAndPrint("After linear scan order");
-        }
+    private Map<Value, LIRBlock> computeLinearScanOrder() {
+        return makeLinearScanOrder();
     }
 
-    private void makeLinearScanOrder() {
+    private Map<Value, LIRBlock> makeLinearScanOrder() {
+
+        Map<Value, LIRBlock> valueToBlock = new HashMap<Value, LIRBlock>();
+
         if (orderedBlocks == null) {
             CriticalEdgeFinder finder = new CriticalEdgeFinder(this);
             getHIRStartBlock().iteratePreOrder(finder);
@@ -119,7 +122,7 @@
             int z = 0;
             for (BlockBegin bb : blocks) {
                 LIRBlock lirBlock = new LIRBlock(z);
-                bb.setLIRBlock(lirBlock);
+                valueToBlock.put(bb, lirBlock);
                 lirBlock.setLinearScanNumber(bb.linearScanNumber());
                 // TODO(tw): Initialize LIRBlock.linearScanLoopHeader and LIRBlock.linearScanLoopEnd
                 lirBlock.setStateBefore(bb.stateBefore());
@@ -127,14 +130,15 @@
                 ++z;
             }
 
+            z = 0;
             for (BlockBegin bb : blocks) {
-                LIRBlock lirBlock = bb.lirBlock();
+                LIRBlock lirBlock = orderedBlocks.get(z);
                 for (int i = 0; i < bb.numberOfPreds(); ++i) {
-                    lirBlock.blockPredecessors().add(bb.predAt(i).block().lirBlock());
+                    lirBlock.blockPredecessors().add(valueToBlock.get(bb.predAt(i).block()));
                 }
 
                 for (int i = 0; i < bb.numberOfSux(); ++i) {
-                    lirBlock.blockSuccessors().add(bb.suxAt(i).lirBlock());
+                    lirBlock.blockSuccessors().add(valueToBlock.get(bb.suxAt(i)));
                 }
 
                 Instruction first = bb;
@@ -142,12 +146,14 @@
                     lirBlock.getInstructions().add(first);
                     first = first.next();
                 }
+                ++z;
             }
 
-            startBlock = getHIRStartBlock().lirBlock();
+            startBlock = valueToBlock.get(getHIRStartBlock());
             assert startBlock != null;
             compilation.stats.loopCount = computeLinearScanOrder.numLoops();
         }
+        return valueToBlock;
     }
 
     /**
--- a/graal/GraalCompiler/src/com/sun/c1x/ir/BlockBegin.java	Fri May 20 16:31:31 2011 +0200
+++ b/graal/GraalCompiler/src/com/sun/c1x/ir/BlockBegin.java	Fri May 20 16:40:32 2011 +0200
@@ -26,7 +26,6 @@
 
 import com.oracle.graal.graph.*;
 import com.sun.c1x.debug.*;
-import com.sun.c1x.lir.*;
 import com.sun.c1x.util.*;
 import com.sun.c1x.value.*;
 import com.sun.cri.ci.*;
@@ -76,17 +75,6 @@
 
     private int linearScanNumber;
 
-    // LIR block
-    public LIRBlock lirBlock;
-
-    public void setLIRBlock(LIRBlock block) {
-        this.lirBlock = block;
-    }
-
-    public LIRBlock lirBlock() {
-        return lirBlock;
-    }
-
     /**
      * Index of bytecode that generated this node when appended in a basic block.
      * Negative values indicate special cases.
--- a/graal/GraalGraph/src/com/oracle/graal/graph/Node.java	Fri May 20 16:31:31 2011 +0200
+++ b/graal/GraalGraph/src/com/oracle/graal/graph/Node.java	Fri May 20 16:40:32 2011 +0200
@@ -23,7 +23,6 @@
 package com.oracle.graal.graph;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;