comparison src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp @ 517:e9be0e04635a

6689653: JMapPerm fails with UseConcMarkSweepIncGC and compressed oops off Summary: Added safe_object_iterate() for use by JMapPerm. Reviewed-by: tonyp
author jmasa
date Tue, 06 Jan 2009 07:05:05 -0800
parents 27a80744a83b
children 0af8b0718fc9
comparison
equal deleted inserted replaced
500:ca7d48236048 517:e9be0e04635a
3012 if (freelistLock()->owned_by_self()) { 3012 if (freelistLock()->owned_by_self()) {
3013 Generation::object_iterate(cl); 3013 Generation::object_iterate(cl);
3014 } else { 3014 } else {
3015 MutexLockerEx x(freelistLock(), Mutex::_no_safepoint_check_flag); 3015 MutexLockerEx x(freelistLock(), Mutex::_no_safepoint_check_flag);
3016 Generation::object_iterate(cl); 3016 Generation::object_iterate(cl);
3017 }
3018 }
3019
3020 void
3021 ConcurrentMarkSweepGeneration::safe_object_iterate(ObjectClosure* cl) {
3022 if (freelistLock()->owned_by_self()) {
3023 Generation::safe_object_iterate(cl);
3024 } else {
3025 MutexLockerEx x(freelistLock(), Mutex::_no_safepoint_check_flag);
3026 Generation::safe_object_iterate(cl);
3017 } 3027 }
3018 } 3028 }
3019 3029
3020 void 3030 void
3021 ConcurrentMarkSweepGeneration::pre_adjust_pointers() { 3031 ConcurrentMarkSweepGeneration::pre_adjust_pointers() {
6999 // future by detecting that condition and clearing fewer 7009 // future by detecting that condition and clearing fewer
7000 // MUT/CT entries. 7010 // MUT/CT entries.
7001 _mut->clear_range(mr); 7011 _mut->clear_range(mr);
7002 } 7012 }
7003 DEBUG_ONLY(}) 7013 DEBUG_ONLY(})
7004
7005 // Note: the finger doesn't advance while we drain 7014 // Note: the finger doesn't advance while we drain
7006 // the stack below. 7015 // the stack below.
7007 PushOrMarkClosure pushOrMarkClosure(_collector, 7016 PushOrMarkClosure pushOrMarkClosure(_collector,
7008 _span, _bitMap, _markStack, 7017 _span, _bitMap, _markStack,
7009 _revisitStack, 7018 _revisitStack,