< prev index next >

src/hotspot/share/runtime/serviceThread.cpp

Print this page

        

*** 22,31 **** --- 22,32 ---- * */ #include "precompiled.hpp" #include "classfile/stringTable.hpp" + #include "classfile/symbolTable.hpp" #include "runtime/interfaceSupport.inline.hpp" #include "runtime/javaCalls.hpp" #include "runtime/serviceThread.hpp" #include "runtime/mutexLocker.hpp" #include "runtime/os.hpp"
*** 82,91 **** --- 83,93 ---- bool has_jvmti_events = false; bool has_gc_notification_event = false; 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 // will be handled by safepoint correctly when this thread is // notified at a safepoint.
*** 99,109 **** MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); while (!(sensors_changed = LowMemoryDetector::has_pending_requests()) && !(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())) { // 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); } --- 101,112 ---- MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); while (!(sensors_changed = LowMemoryDetector::has_pending_requests()) && !(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()) && ! !(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); }
*** 114,123 **** --- 117,130 ---- if (stringtable_work) { StringTable::do_concurrent_work(jt); } + if (symboltable_work) { + SymbolTable::do_concurrent_work(jt); + } + if (has_jvmti_events) { jvmti_event.post(); } if (sensors_changed) {
< prev index next >