1.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Sat Dec 20 00:45:18 2008 -0800 1.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Tue Jan 06 07:05:05 2009 -0800 1.3 @@ -3018,6 +3018,16 @@ 1.4 } 1.5 1.6 void 1.7 +ConcurrentMarkSweepGeneration::safe_object_iterate(ObjectClosure* cl) { 1.8 + if (freelistLock()->owned_by_self()) { 1.9 + Generation::safe_object_iterate(cl); 1.10 + } else { 1.11 + MutexLockerEx x(freelistLock(), Mutex::_no_safepoint_check_flag); 1.12 + Generation::safe_object_iterate(cl); 1.13 + } 1.14 +} 1.15 + 1.16 +void 1.17 ConcurrentMarkSweepGeneration::pre_adjust_pointers() { 1.18 } 1.19 1.20 @@ -7001,7 +7011,6 @@ 1.21 _mut->clear_range(mr); 1.22 } 1.23 DEBUG_ONLY(}) 1.24 - 1.25 // Note: the finger doesn't advance while we drain 1.26 // the stack below. 1.27 PushOrMarkClosure pushOrMarkClosure(_collector,