Code Review for 6854812

Prepared by:never on Thu Sep 10 16:10:57 PDT 2009
Compare against: ssh://
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).