< prev index next >

src/hotspot/share/runtime/serviceThread.cpp

Print this page

        

@@ -39,10 +39,11 @@
 #include "prims/resolvedMethodTable.hpp"
 #include "services/diagnosticArgument.hpp"
 #include "services/diagnosticFramework.hpp"
 #include "services/gcNotifier.hpp"
 #include "services/lowMemoryDetector.hpp"
+#include "services/threadTable.hpp"
 
 ServiceThread* ServiceThread::_instance = NULL;
 
 void ServiceThread::initialize() {
   EXCEPTION_MARK;

@@ -105,10 +106,11 @@
     bool has_gc_notification_event = false;
     bool has_dcmd_notification_event = false;
     bool stringtable_work = false;
     bool symboltable_work = false;
     bool resolved_method_table_work = false;
+    bool thread_table_work = false;
     bool protection_domain_table_work = false;
     bool oopstorage_work = false;
     JvmtiDeferredEvent jvmti_event;
     {
       // Need state transition ThreadBlockInVM so that this thread

@@ -131,10 +133,11 @@
               (has_gc_notification_event = GCNotifier::has_event()) |
               (has_dcmd_notification_event = DCmdFactory::has_pending_jmx_notification()) |
               (stringtable_work = StringTable::has_work()) |
               (symboltable_work = SymbolTable::has_work()) |
               (resolved_method_table_work = ResolvedMethodTable::has_work()) |
+              (thread_table_work = ThreadTable::has_work()) |
               (protection_domain_table_work = SystemDictionary::pd_cache_table()->has_work()) |
               (oopstorage_work = OopStorage::has_cleanup_work_and_reset()))
              == 0) {
         // Wait until notified that there is some work to do.
         ml.wait();

@@ -171,10 +174,14 @@
 
     if (resolved_method_table_work) {
       ResolvedMethodTable::do_concurrent_work(jt);
     }
 
+    if (thread_table_work) {
+       ThreadTable::do_concurrent_work(jt);
+    }
+
     if (protection_domain_table_work) {
       SystemDictionary::pd_cache_table()->unlink();
     }
 
     if (oopstorage_work) {
< prev index next >