< prev index next >

src/hotspot/share/runtime/serviceThread.cpp

Print this page
rev 51795 : imported patch fix

*** 84,94 **** while (true) { bool sensors_changed = false; 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; bool resolved_method_table_work = false; bool protection_domain_table_work = false; JvmtiDeferredEvent jvmti_event; --- 84,93 ----
*** 102,121 **** // external suspension. ThreadBlockInVM tbivm(jt); 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()) && ! !(resolved_method_table_work = ResolvedMethodTable::has_work()) && ! !(protection_domain_table_work = SystemDictionary::pd_cache_table()->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); } if (has_jvmti_events) { jvmti_event = JvmtiDeferredEventQueue::dequeue(); --- 101,121 ---- // external suspension. ThreadBlockInVM tbivm(jt); MutexLockerEx ml(Service_lock, Mutex::_no_safepoint_check_flag); ! // Use arithmetic-or to combine results; we don't want short-circuiting. ! 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()) | ! (resolved_method_table_work = ResolvedMethodTable::has_work()) | ! (protection_domain_table_work = SystemDictionary::pd_cache_table()->has_work())) ! == 0) { ! // Wait until notified that there is some work to do. Service_lock->wait(Mutex::_no_safepoint_check_flag); } if (has_jvmti_events) { jvmti_event = JvmtiDeferredEventQueue::dequeue();
< prev index next >