Mercurial > hg > graal-compiler
diff graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java @ 2812:d27bdbec3d67
Removed ArrayLength from CFG. Fixed an issue when scheduling Merge instructions within a block.
If a block only consists of a single Merge instruction, we have to schedule this instruction as the first instruction.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Mon, 30 May 2011 15:24:26 +0200 |
parents | 50b5db2c3e68 |
children | 015be60afcf3 ac4b086cbd72 |
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java Mon May 30 15:03:04 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java Mon May 30 15:24:26 2011 +0200 @@ -222,6 +222,10 @@ TTY.println("BEGIN Generating LIR for block B" + block.blockID()); } + if (block.blockPredecessors().size() > 1) { + lastState = null; + } + for (Node instr : block.getInstructions()) { FrameState stateAfter = null; if (instr instanceof Instruction) { @@ -686,11 +690,11 @@ } } - protected CiValue emitXir(XirSnippet snippet, Instruction x, LIRDebugInfo info, RiMethod method, boolean setInstructionResult) { + protected CiValue emitXir(XirSnippet snippet, Value x, LIRDebugInfo info, RiMethod method, boolean setInstructionResult) { return emitXir(snippet, x, info, null, method, setInstructionResult, null); } - protected CiValue emitXir(XirSnippet snippet, Instruction instruction, LIRDebugInfo info, LIRDebugInfo infoAfter, RiMethod method, boolean setInstructionResult, List<CiValue> pointerSlots) { + protected CiValue emitXir(XirSnippet snippet, Value instruction, LIRDebugInfo info, LIRDebugInfo infoAfter, RiMethod method, boolean setInstructionResult, List<CiValue> pointerSlots) { if (C1XOptions.PrintXirTemplates) { TTY.println("Emit XIR template " + snippet.template.name); }