changeset 15128:d0e2d565176f

BaselineCompiler: copy frame state builder at loop headers.
author Josef Eisl <josef.eisl@jku.at>
date Tue, 15 Apr 2014 20:35:52 +0200
parents dc774fe9d0e0
children 118a3e438150
files graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java test/baseline_whitelist.txt
diffstat 2 files changed, 9 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java	Tue Apr 15 19:52:23 2014 +0200
+++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java	Tue Apr 15 20:35:52 2014 +0200
@@ -717,6 +717,14 @@
             assert block.getPredecessorCount() > 0;
         }
 
+        if (block.isLoopHeader) {
+            /*
+             * We need to preserve the frame state builder of the loop header so that we can merge
+             * values for phi functions, so make a copy of it.
+             */
+            block.entryState = frameState.copy();
+
+        }
         int endBCI = stream.endBCI();
 
         stream.setBCI(block.startBci);
--- a/test/baseline_whitelist.txt	Tue Apr 15 19:52:23 2014 +0200
+++ b/test/baseline_whitelist.txt	Tue Apr 15 20:35:52 2014 +0200
@@ -1,6 +1,7 @@
 com.oracle.graal.jtt.loop.Loop03
 com.oracle.graal.jtt.loop.Loop04
 com.oracle.graal.jtt.loop.Loop08
+com.oracle.graal.jtt.loop.Loop11
 com.oracle.graal.jtt.bytecode.BC_iadd
 com.oracle.graal.jtt.bytecode.BC_iadd2
 com.oracle.graal.jtt.bytecode.BC_iadd3