Mercurial > hg > truffle
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