< prev index next >

src/share/vm/runtime/thread.cpp

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

@@ -98,15 +98,10 @@
 #include "utilities/defaultStream.hpp"
 #include "utilities/dtrace.hpp"
 #include "utilities/events.hpp"
 #include "utilities/macros.hpp"
 #include "utilities/preserveException.hpp"
-#if INCLUDE_ALL_GCS
-#include "gc/cms/concurrentMarkSweepThread.hpp"
-#include "gc/g1/concurrentMarkThread.inline.hpp"
-#include "gc/parallel/pcTasks.hpp"
-#endif // INCLUDE_ALL_GCS
 #if INCLUDE_JVMCI
 #include "jvmci/jvmciCompiler.hpp"
 #include "jvmci/jvmciRuntime.hpp"
 #endif
 #ifdef COMPILER1

@@ -1914,11 +1909,11 @@
     JvmtiExport::cleanup_thread(this);
   }
 
   // We must flush any deferred card marks before removing a thread from
   // the list of active threads.
-  Universe::heap()->flush_deferred_store_barrier(this);
+  GC::gc()->heap()->flush_deferred_store_barrier(this);
   assert(deferred_card_mark().is_empty(), "Should have been flushed");
 
 #if INCLUDE_ALL_GCS
   // We must flush the G1-related buffers before removing a thread
   // from the list of active threads. We must do this after any deferred

@@ -3356,11 +3351,11 @@
     tc->do_thread(p);
   }
   // Someday we could have a table or list of all non-JavaThreads.
   // For now, just manually iterate through them.
   tc->do_thread(VMThread::vm_thread());
-  Universe::heap()->gc_threads_do(tc);
+  GC::gc()->heap()->gc_threads_do(tc);
   WatcherThread *wt = WatcherThread::watcher_thread();
   // Strictly speaking, the following NULL check isn't sufficient to make sure
   // the data for WatcherThread is still valid upon being examined. However,
   // considering that WatchThread terminates when the VM is on the way to
   // exit at safepoint, the chance of the above is extremely small. The right

@@ -3535,10 +3530,16 @@
   jint parse_result = Arguments::parse(args);
   if (parse_result != JNI_OK) return parse_result;
 
   os::init_before_ergo();
 
+  Arguments::select_gc();
+  jint gc_result = GC::initialize();
+  if (gc_result != JNI_OK) {
+    return gc_result;
+  }
+
   jint ergo_result = Arguments::apply_ergo();
   if (ergo_result != JNI_OK) return ergo_result;
 
   // Final check of all ranges after ergonomics which may change values.
   if (!CommandLineFlagRangeList::check_ranges()) {

@@ -4346,28 +4347,10 @@
   if (vmt->claim_oops_do(is_par, cp)) {
     vmt->oops_do(f, cf);
   }
 }
 
-#if INCLUDE_ALL_GCS
-// Used by ParallelScavenge
-void Threads::create_thread_roots_tasks(GCTaskQueue* q) {
-  ALL_JAVA_THREADS(p) {
-    q->enqueue(new ThreadRootsTask(p));
-  }
-  q->enqueue(new ThreadRootsTask(VMThread::vm_thread()));
-}
-
-// Used by Parallel Old
-void Threads::create_thread_roots_marking_tasks(GCTaskQueue* q) {
-  ALL_JAVA_THREADS(p) {
-    q->enqueue(new ThreadRootsMarkingTask(p));
-  }
-  q->enqueue(new ThreadRootsMarkingTask(VMThread::vm_thread()));
-}
-#endif // INCLUDE_ALL_GCS
-
 void Threads::nmethods_do(CodeBlobClosure* cf) {
   ALL_JAVA_THREADS(p) {
     // This is used by the code cache sweeper to mark nmethods that are active
     // on the stack of a Java thread. Ignore the sweeper thread itself to avoid
     // marking CodeCacheSweeperThread::_scanned_compiled_method as active.

@@ -4508,11 +4491,11 @@
 #endif // INCLUDE_SERVICES
   }
 
   VMThread::vm_thread()->print_on(st);
   st->cr();
-  Universe::heap()->print_gc_threads_on(st);
+  GC::gc()->heap()->print_gc_threads_on(st);
   WatcherThread* wt = WatcherThread::watcher_thread();
   if (wt != NULL) {
     wt->print_on(st);
     st->cr();
   }

@@ -4565,11 +4548,11 @@
   st->print_cr("Other Threads:");
   print_on_error(VMThread::vm_thread(), st, current, buf, buflen, &found_current);
   print_on_error(WatcherThread::watcher_thread(), st, current, buf, buflen, &found_current);
 
   PrintOnErrorClosure print_closure(st, current, buf, buflen, &found_current);
-  Universe::heap()->gc_threads_do(&print_closure);
+  GC::gc()->heap()->gc_threads_do(&print_closure);
 
   if (!found_current) {
     st->cr();
     st->print("=>" PTR_FORMAT " (exited) ", p2i(current));
     current->print_on_error(st, buf, buflen);
< prev index next >