# HG changeset patch # User Thomas Wuerthinger # Date 1305903418 -7200 # Node ID 127db58b044e588329c582714690e84882fcd809 # Parent b72e6638b9e63ef7dea556a8d2d4c26e8cf43ce9 One more step towards schedule. diff -r b72e6638b9e6 -r 127db58b044e graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java --- a/graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java Fri May 20 16:40:32 2011 +0200 +++ b/graal/GraalCompiler/src/com/oracle/max/graal/schedule/Schedule.java Fri May 20 16:56:58 2011 +0200 @@ -39,6 +39,14 @@ identifyBlocks(); } + public List getBlocks() { + return Collections.unmodifiableList(blocks); + } + + public NodeMap getNodeToBlock() { + return nodeToBlock; + } + private Block createBlock() { Block b = new Block(blocks.size()); blocks.add(b); diff -r b72e6638b9e6 -r 127db58b044e graal/GraalCompiler/src/com/sun/c1x/graph/IR.java --- a/graal/GraalCompiler/src/com/sun/c1x/graph/IR.java Fri May 20 16:40:32 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/graph/IR.java Fri May 20 16:56:58 2011 +0200 @@ -24,6 +24,7 @@ import java.util.*; +import com.oracle.graal.graph.*; import com.oracle.max.graal.schedule.*; import com.sun.c1x.*; import com.sun.c1x.debug.*; @@ -84,6 +85,25 @@ } Schedule schedule = new Schedule(this.compilation.graph); + List blocks = schedule.getBlocks(); + NodeMap nodeToBlock = schedule.getNodeToBlock(); + Map map = new HashMap(); + for (Block b : blocks) { + map.put(b, new LIRBlock(b.blockID())); + } + + for (Block b : blocks) { + for (Block succ : b.getSuccessors()) { + map.get(b).blockSuccessors().add(map.get(succ)); + } + + for (Block pred : b.getPredecessors()) { + map.get(b).blockPredecessors().add(map.get(pred)); + } + } + + // TODO(tw): Schedule nodes within a block. + valueToBlock = computeLinearScanOrder(); verifyAndPrint("After linear scan order"); diff -r b72e6638b9e6 -r 127db58b044e graal/GraalCompiler/src/com/sun/c1x/lir/LIRBlock.java --- a/graal/GraalCompiler/src/com/sun/c1x/lir/LIRBlock.java Fri May 20 16:40:32 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/lir/LIRBlock.java Fri May 20 16:56:58 2011 +0200 @@ -79,6 +79,7 @@ public LIRBlock(int blockID) { this.blockID = blockID; loopIndex = -1; + linearScanNumber = blockID; } public List getInstructions() {