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);
         }