--- old/src/hotspot/share/runtime/serviceThread.cpp 2018-08-01 11:19:13.000000000 -0500 +++ new/src/hotspot/share/runtime/serviceThread.cpp 2018-08-01 11:19:12.000000000 -0500 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "classfile/stringTable.hpp" +#include "classfile/symbolTable.hpp" #include "runtime/interfaceSupport.inline.hpp" #include "runtime/javaCalls.hpp" #include "runtime/serviceThread.hpp" @@ -84,6 +85,7 @@ bool has_dcmd_notification_event = false; bool acs_notify = false; bool stringtable_work = false; + bool symboltable_work = false; JvmtiDeferredEvent jvmti_event; { // Need state transition ThreadBlockInVM so that this thread @@ -101,7 +103,8 @@ !(has_jvmti_events = JvmtiDeferredEventQueue::has_events()) && !(has_gc_notification_event = GCNotifier::has_event()) && !(has_dcmd_notification_event = DCmdFactory::has_pending_jmx_notification()) && - !(stringtable_work = StringTable::has_work())) { + !(stringtable_work = StringTable::has_work()) && + !(symboltable_work = SymbolTable::has_work())) { // wait until one of the sensors has pending requests, or there is a // pending JVMTI event or JMX GC notification to post Service_lock->wait(Mutex::_no_safepoint_check_flag); @@ -116,6 +119,10 @@ StringTable::do_concurrent_work(jt); } + if (symboltable_work) { + SymbolTable::do_concurrent_work(jt); + } + if (has_jvmti_events) { jvmti_event.post(); }