Mercurial > hg > truffle
changeset 3053:b7f45b37dd43
Fix bug in FrameState handling for LoopBegin, BitMap -> GraalBitMap in some assertions in graalCodeInstaller
author | Gilles Duboscq <gilles.duboscq@oracle.com> |
---|---|
date | Tue, 21 Jun 2011 10:35:27 +0200 |
parents | 4afbc254f02d |
children | fe7145755a91 2e20c39e472f |
files | graal/com.oracle.max.graal.compiler/.classpath graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java graal/com.oracle.max.graal.graphviz/.classpath src/share/vm/graal/graalCodeInstaller.cpp |
diffstat | 4 files changed, 30 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/.classpath Mon Jun 20 20:02:11 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/.classpath Tue Jun 21 10:35:27 2011 +0200 @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.asm"/> - <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.cri"/> - <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.graal.graphviz"/> - <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.graal.graph"/> - <classpathentry kind="output" path="bin"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.asm"/> + <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.cri"/> + <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.graal.graphviz"/> + <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.graal.graph"/> + <classpathentry kind="output" path="bin"/> +</classpath>
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Mon Jun 20 20:02:11 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Tue Jun 21 10:35:27 2011 +0200 @@ -298,16 +298,7 @@ if (existingState == null) { // copy state because it is modified - FrameState duplicate = newState.duplicate(bci); - - // if the block is a loop header, insert all necessary phis - if (target.isLoopHeader && !isVisited(target)) { - LoopBegin loopBegin = loopBegin(target); - assert target.firstInstruction instanceof Placeholder && loopBegin != null; - //System.out.println("insertLoopPhis with " + target.loopHeaderState); - insertLoopPhis(loopBegin, loopBegin.stateAfter()); - } - first.setStateAfter(duplicate); + first.setStateAfter(newState.duplicate(bci)); } else { if (!GraalOptions.AssumeVerifiedBytecode && !existingState.isCompatibleWith(newState)) { // stacks or locks do not match--bytecodes would not verify @@ -1215,7 +1206,13 @@ markVisited(block); // now parse the block if (block.isLoopHeader) { - lastInstr = loopBegin(block); + LoopBegin begin = loopBegin(block); + FrameState preLoopState = block.firstInstruction.stateAfter(); + assert preLoopState != null; + FrameState duplicate = preLoopState.duplicate(preLoopState.bci); + begin.setStateAfter(duplicate); + insertLoopPhis(begin, duplicate); + lastInstr = begin; } else { lastInstr = block.firstInstruction; }
--- a/graal/com.oracle.max.graal.graphviz/.classpath Mon Jun 20 20:02:11 2011 +0200 +++ b/graal/com.oracle.max.graal.graphviz/.classpath Tue Jun 21 10:35:27 2011 +0200 @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="test"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> - <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> - <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.graal.graph"/> - <classpathentry kind="output" path="bin"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="src" path="test"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> + <classpathentry combineaccessrules="false" kind="src" path="/com.oracle.max.graal.graph"/> + <classpathentry kind="output" path="bin"/> +</classpath>
--- a/src/share/vm/graal/graalCodeInstaller.cpp Mon Jun 20 20:02:11 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Tue Jun 21 10:35:27 2011 +0200 @@ -73,7 +73,7 @@ oop frame_map = (oop) CiDebugInfo::frameRefMap(debug_info); if (register_map != NULL) { - assert(BitMap::size(register_map) == (unsigned) NUM_CPU_REGS, "unexpected register_map length"); + assert(GraalBitMap::size(register_map) == (unsigned) NUM_CPU_REGS, "unexpected register_map length"); for (jint i = 0; i < NUM_CPU_REGS; i++) { bool is_oop = is_bit_set(register_map, i); VMReg reg = get_hotspot_reg(i); @@ -87,7 +87,7 @@ } if (frame_size > 0) { - assert(BitMap::size(frame_map) == frame_size / HeapWordSize, "unexpected frame_map length"); + assert(GraalBitMap::size(frame_map) == frame_size / HeapWordSize, "unexpected frame_map length"); for (jint i = 0; i < frame_size / HeapWordSize; i++) { bool is_oop = is_bit_set(frame_map, i); @@ -100,7 +100,7 @@ } } } else { - assert(frame_map == NULL || BitMap::size(frame_map) == 0, "cannot have frame_map for frames with size 0"); + assert(frame_map == NULL || GraalBitMap::size(frame_map) == 0, "cannot have frame_map for frames with size 0"); } return map;