Fri, 22 Aug 2008 11:48:25 -0700
6735416: G1: runThese javasoft.sqe.tests.lang.thrd011.thrd01101.thrd01101 fails
6622418: G1: assert(false,"Non-balanced monitor enter/exit!") fails
Summary: The mark-sweep compact (which we use for full gc) wrapper did not save the mark words for biased locked objects. The fix is to trivially call the appropriate methods.
Reviewed-by: tonyp, ysr
src/share/vm/gc_implementation/g1/g1MarkSweep.cpp | file | annotate | diff | comparison | revisions | |
src/share/vm/gc_implementation/includeDB_gc_g1 | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Thu Aug 21 23:38:19 2008 -0400 1.2 +++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Fri Aug 22 11:48:25 2008 -0700 1.3 @@ -50,6 +50,10 @@ 1.4 1.5 allocate_stacks(); 1.6 1.7 + // We should save the marks of the currently locked biased monitors. 1.8 + // The marking doesn't preserve the marks of biased objects. 1.9 + BiasedLocking::preserve_marks(); 1.10 + 1.11 mark_sweep_phase1(marked_for_unloading, clear_all_softrefs); 1.12 1.13 if (G1VerifyConcMark) { 1.14 @@ -67,7 +71,7 @@ 1.15 mark_sweep_phase4(); 1.16 1.17 GenMarkSweep::restore_marks(); 1.18 - 1.19 + BiasedLocking::restore_marks(); 1.20 GenMarkSweep::deallocate_stacks(); 1.21 1.22 // We must invalidate the perm-gen rs, so that it gets rebuilt.
2.1 --- a/src/share/vm/gc_implementation/includeDB_gc_g1 Thu Aug 21 23:38:19 2008 -0400 2.2 +++ b/src/share/vm/gc_implementation/includeDB_gc_g1 Fri Aug 22 11:48:25 2008 -0700 2.3 @@ -19,7 +19,7 @@ 2.4 // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 2.5 // CA 95054 USA or visit www.sun.com if you need additional information or 2.6 // have any questions. 2.7 -// 2.8 +// 2.9 // 2.10 2.11 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps! 2.12 @@ -100,7 +100,7 @@ 2.13 2.14 concurrentZFThread.hpp concurrentGCThread.hpp 2.15 concurrentZFThread.hpp coTracker.hpp 2.16 - 2.17 + 2.18 dirtyCardQueue.cpp atomic.hpp 2.19 dirtyCardQueue.cpp dirtyCardQueue.hpp 2.20 dirtyCardQueue.cpp heapRegionRemSet.hpp 2.21 @@ -183,6 +183,7 @@ 2.22 top.hpp g1_globals.hpp 2.23 2.24 g1MarkSweep.cpp aprofiler.hpp 2.25 +g1MarkSweep.cpp biasedLocking.hpp 2.26 g1MarkSweep.cpp codeCache.hpp 2.27 g1MarkSweep.cpp events.hpp 2.28 g1MarkSweep.cpp fprofiler.hpp