--- old/src/hotspot/share/runtime/serviceThread.cpp 2019-06-28 15:24:40.000000000 -0700 +++ new/src/hotspot/share/runtime/serviceThread.cpp 2019-06-28 15:24:40.000000000 -0700 @@ -41,6 +41,7 @@ #include "services/diagnosticFramework.hpp" #include "services/gcNotifier.hpp" #include "services/lowMemoryDetector.hpp" +#include "services/threadTable.hpp" ServiceThread* ServiceThread::_instance = NULL; @@ -124,6 +125,7 @@ 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; bool oopstorages_cleanup[oopstorage_count] = {}; // Zero (false) initialize. @@ -151,6 +153,7 @@ (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 = needs_oopstorage_cleanup(oopstorages, oopstorages_cleanup, @@ -194,6 +197,10 @@ ResolvedMethodTable::do_concurrent_work(jt); } + if (thread_table_work) { + ThreadTable::do_concurrent_work(jt); + } + if (protection_domain_table_work) { SystemDictionary::pd_cache_table()->unlink(); }