Mercurial > hg > truffle
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*/); |