mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6621144: CMS: assertion failure "is_cms_thread == Thread::current()->is_ConcurrentGC_thread()"
Take lock conditionally (in asynchronous mode only) when updating the dead-object map. Reviewed-by: jmasa
This commit is contained in:
parent
38fdc8ab98
commit
ae065e6290
1 changed files with 9 additions and 3 deletions
|
@ -5732,13 +5732,19 @@ void CMSCollector::sweep(bool asynch) {
|
||||||
// in the perm_gen_verify_bit_map. In order to do that we traverse
|
// in the perm_gen_verify_bit_map. In order to do that we traverse
|
||||||
// all blocks in perm gen and mark all dead objects.
|
// all blocks in perm gen and mark all dead objects.
|
||||||
if (verifying() && !cms_should_unload_classes()) {
|
if (verifying() && !cms_should_unload_classes()) {
|
||||||
CMSTokenSyncWithLocks ts(true, _permGen->freelistLock(),
|
|
||||||
bitMapLock());
|
|
||||||
assert(perm_gen_verify_bit_map()->sizeInBits() != 0,
|
assert(perm_gen_verify_bit_map()->sizeInBits() != 0,
|
||||||
"Should have already been allocated");
|
"Should have already been allocated");
|
||||||
MarkDeadObjectsClosure mdo(this, _permGen->cmsSpace(),
|
MarkDeadObjectsClosure mdo(this, _permGen->cmsSpace(),
|
||||||
markBitMap(), perm_gen_verify_bit_map());
|
markBitMap(), perm_gen_verify_bit_map());
|
||||||
_permGen->cmsSpace()->blk_iterate(&mdo);
|
if (asynch) {
|
||||||
|
CMSTokenSyncWithLocks ts(true, _permGen->freelistLock(),
|
||||||
|
bitMapLock());
|
||||||
|
_permGen->cmsSpace()->blk_iterate(&mdo);
|
||||||
|
} else {
|
||||||
|
// In the case of synchronous sweep, we already have
|
||||||
|
// the requisite locks/tokens.
|
||||||
|
_permGen->cmsSpace()->blk_iterate(&mdo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (asynch) {
|
if (asynch) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue