Mercurial > hg > truffle
diff graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java @ 2801:2af109bec0c0
Make block contains a list of nodes instead a list of instructions.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Fri, 27 May 2011 15:11:34 +0200 |
parents | d6bf240963fb |
children | c3f64b66fc78 |
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java Fri May 27 14:58:55 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java Fri May 27 15:11:34 2011 +0200 @@ -224,8 +224,11 @@ TTY.println("BEGIN Generating LIR for block B" + block.blockID()); } - for (Instruction instr : block.getInstructions()) { - FrameState stateAfter = instr.stateAfter(); + for (Node instr : block.getInstructions()) { + FrameState stateAfter = null; + if (instr instanceof Instruction) { + stateAfter = ((Instruction) instr).stateAfter(); + } FrameState stateBefore = null; if (instr instanceof StateSplit && ((StateSplit) instr).stateBefore() != null) { stateBefore = ((StateSplit) instr).stateBefore(); @@ -239,9 +242,9 @@ } } } - if (!(instr instanceof Merge)) { + if (!(instr instanceof Merge) && instr != instr.graph().start()) { walkState(instr, stateAfter); - doRoot(instr); + doRoot((Value) instr); } if (stateAfter != null) { lastState = stateAfter; @@ -1215,12 +1218,11 @@ return res.toArray(new SwitchRange[res.size()]); } - void doRoot(Instruction instr) { + void doRoot(Value instr) { if (C1XOptions.TraceLIRGeneratorLevel >= 2) { - TTY.println("Emitting LIR for instruction " + instr.toString()); + TTY.println("Emitting LIR for instruction " + instr); } currentInstruction = instr; - assert !instr.hasSubst() : "shouldn't have missed substitution"; if (C1XOptions.TraceLIRVisit) { TTY.println("Visiting " + instr); @@ -1289,7 +1291,7 @@ private List<Phi> getPhis(LIRBlock block) { if (block.getInstructions().size() > 0) { - Instruction i = block.getInstructions().get(0); + Node i = block.getInstructions().get(0); if (i instanceof Merge) { List<Phi> result = new ArrayList<Phi>(); for (Node n : i.usages()) { @@ -1431,7 +1433,7 @@ } } - protected void walkState(Instruction x, FrameState state) { + protected void walkState(Node x, FrameState state) { if (state == null) { return; } @@ -1453,7 +1455,6 @@ private void walkStateValue(Value value) { if (value != null) { - assert !value.hasSubst() : "missed substitution on " + value.toString(); if (value instanceof Phi && !value.isIllegal()) { // phi's are special operandForPhi((Phi) value);