comparison src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @ 358:8651a65ac4b4

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
author iveresov
date Fri, 22 Aug 2008 11:48:25 -0700
parents 37f87013dfd8
children c96030fff130
comparison
equal deleted inserted replaced
357:2564c620fa42 358:8651a65ac4b4
48 48
49 bool marked_for_unloading = false; 49 bool marked_for_unloading = false;
50 50
51 allocate_stacks(); 51 allocate_stacks();
52 52
53 // We should save the marks of the currently locked biased monitors.
54 // The marking doesn't preserve the marks of biased objects.
55 BiasedLocking::preserve_marks();
56
53 mark_sweep_phase1(marked_for_unloading, clear_all_softrefs); 57 mark_sweep_phase1(marked_for_unloading, clear_all_softrefs);
54 58
55 if (G1VerifyConcMark) { 59 if (G1VerifyConcMark) {
56 G1CollectedHeap* g1h = G1CollectedHeap::heap(); 60 G1CollectedHeap* g1h = G1CollectedHeap::heap();
57 g1h->checkConcurrentMark(); 61 g1h->checkConcurrentMark();
65 mark_sweep_phase3(); 69 mark_sweep_phase3();
66 70
67 mark_sweep_phase4(); 71 mark_sweep_phase4();
68 72
69 GenMarkSweep::restore_marks(); 73 GenMarkSweep::restore_marks();
70 74 BiasedLocking::restore_marks();
71 GenMarkSweep::deallocate_stacks(); 75 GenMarkSweep::deallocate_stacks();
72 76
73 // We must invalidate the perm-gen rs, so that it gets rebuilt. 77 // We must invalidate the perm-gen rs, so that it gets rebuilt.
74 GenRemSet* rs = sh->rem_set(); 78 GenRemSet* rs = sh->rem_set();
75 rs->invalidate(sh->perm_gen()->used_region(), true /*whole_heap*/); 79 rs->invalidate(sh->perm_gen()->used_region(), true /*whole_heap*/);