< prev index next >

src/share/vm/runtime/safepoint.cpp

Print this page
rev 12854 : [mq]: gcinterface.patch

@@ -58,14 +58,10 @@
 #include "services/runtimeService.hpp"
 #include "trace/tracing.hpp"
 #include "trace/traceMacros.hpp"
 #include "utilities/events.hpp"
 #include "utilities/macros.hpp"
-#if INCLUDE_ALL_GCS
-#include "gc/cms/concurrentMarkSweepThread.hpp"
-#include "gc/g1/suspendibleThreadSet.hpp"
-#endif // INCLUDE_ALL_GCS
 #ifdef COMPILER1
 #include "c1/c1_globals.hpp"
 #endif
 
 // --------------------------------------------------------------------------------------------------

@@ -89,19 +85,11 @@
   if (PrintSafepointStatistics || PrintSafepointStatisticsTimeout > 0) {
     _safepoint_begin_time = os::javaTimeNanos();
     _ts_of_current_safepoint = tty->time_stamp().seconds();
   }
 
-#if INCLUDE_ALL_GCS
-  if (UseConcMarkSweepGC) {
-    // In the future we should investigate whether CMS can use the
-    // more-general mechanism below.  DLD (01/05).
-    ConcurrentMarkSweepThread::synchronize(false);
-  } else if (UseG1GC) {
-    SuspendibleThreadSet::synchronize();
-  }
-#endif // INCLUDE_ALL_GCS
+  GC::gc()->synchronize_safepoint();
 
   // By getting the Threads_lock, we assure that no threads are about to start or
   // exit. It is released again in SafepointSynchronize::end().
   Threads_lock->lock();
 

@@ -506,18 +494,13 @@
     // Release threads lock, so threads can be created/destroyed again. It will also starts all threads
     // blocked in signal_thread_blocked
     Threads_lock->unlock();
 
   }
-#if INCLUDE_ALL_GCS
-  // If there are any concurrent GC threads resume them.
-  if (UseConcMarkSweepGC) {
-    ConcurrentMarkSweepThread::desynchronize(false);
-  } else if (UseG1GC) {
-    SuspendibleThreadSet::desynchronize();
-  }
-#endif // INCLUDE_ALL_GCS
+
+  GC::gc()->desynchronize_safepoint();
+
   // record this time so VMThread can keep track how much time has elapsed
   // since last safepoint.
   _end_of_last_safepoint = os::javaTimeMillis();
 
   if (event.should_commit()) {

@@ -1037,11 +1020,11 @@
       // the other registers. In order to preserve it over GCs we need
       // to keep it in a handle.
       oop result = caller_fr.saved_oop_result(&map);
       assert(result == NULL || result->is_oop(), "must be oop");
       return_value = Handle(thread(), result);
-      assert(Universe::heap()->is_in_or_null(result), "must be heap pointer");
+      assert(GC::gc()->heap()->is_in_or_null(result), "must be heap pointer");
     }
 
     // Block the thread
     SafepointSynchronize::block(thread());
 
< prev index next >