Prepared by: | never on Thu Sep 10 16:10:57 PDT 2009 |
---|---|
Workspace: | /export/ws/baseline |
Compare against: | ssh://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot |
Summary of changes: | 29 lines changed: 22 ins; 0 del; 7 mod; 6386 unchg |
Patch of changes: | 6854812.patch |
Author comments: |
The fix for 6384206 added some new logic in ciTypeFlow that tries to build a loop tree. It includes a check for irreducible loops and that code assumes that it can walk up the loop tree at that point without encountering NULL. For certain irreducible loops this isn't true and the loop should just stop at the topmost loop and continue on. Fixing that issue exposed another issue where the state of the OSR entry block could contain a constant address local but since the state of the OSR is loaded from the intepreter locals there's no guarantee that they are actually in agreement. This is caused by the fact that liveness_at_bci says that all locals are live when a debugger is attached. The fix is to use the true liveness computation to filter the locals at the OSR entry point. Tested with failing test from customer and recently found CTW failure for the same issue. |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciTypeFlow.cpp
7 lines changed: 5 ins; 0 del; 2 mod; 2912 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciMethod.hpp
6 lines changed: 6 ins; 0 del; 0 mod; 248 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/ci/ciMethod.cpp
13 lines changed: 9 ins; 0 del; 4 mod; 1062 unchg
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/parse1.cpp
3 lines changed: 2 ins; 0 del; 1 mod; 2164 unchg
This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).