src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp

changeset 952
e9be0e04635a
parent 892
27a80744a83b
child 953
0af8b0718fc9
     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,

mercurial