提交 f8189383 编写于 作者: I iveresov

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
上级 112b9936
......@@ -50,6 +50,10 @@ void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
allocate_stacks();
// We should save the marks of the currently locked biased monitors.
// The marking doesn't preserve the marks of biased objects.
BiasedLocking::preserve_marks();
mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
if (G1VerifyConcMark) {
......@@ -67,7 +71,7 @@ void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
mark_sweep_phase4();
GenMarkSweep::restore_marks();
BiasedLocking::restore_marks();
GenMarkSweep::deallocate_stacks();
// We must invalidate the perm-gen rs, so that it gets rebuilt.
......
......@@ -19,7 +19,7 @@
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// have any questions.
//
//
//
// NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
......@@ -100,7 +100,7 @@ concurrentZFThread.cpp space.inline.hpp
concurrentZFThread.hpp concurrentGCThread.hpp
concurrentZFThread.hpp coTracker.hpp
dirtyCardQueue.cpp atomic.hpp
dirtyCardQueue.cpp dirtyCardQueue.hpp
dirtyCardQueue.cpp heapRegionRemSet.hpp
......@@ -183,6 +183,7 @@ globals.cpp g1_globals.hpp
top.hpp g1_globals.hpp
g1MarkSweep.cpp aprofiler.hpp
g1MarkSweep.cpp biasedLocking.hpp
g1MarkSweep.cpp codeCache.hpp
g1MarkSweep.cpp events.hpp
g1MarkSweep.cpp fprofiler.hpp
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册