< prev index next >

src/hotspot/share/runtime/safepoint.cpp

Print this page
rev 57232 : v2.00 -> v2.08 (CR8/v2.08/11-for-jdk14) patches combined into one; merge with jdk-14+25 snapshot; merge with jdk-14+26 snapshot.

*** 521,532 **** post_safepoint_end_event(event, safepoint_id()); } bool SafepointSynchronize::is_cleanup_needed() { ! // Need a safepoint if there are many monitors to deflate. ! if (ObjectSynchronizer::is_cleanup_needed()) return true; // Need a safepoint if some inline cache buffers is non-empty if (!InlineCacheBuffer::is_empty()) return true; if (StringTable::needs_rehashing()) return true; if (SymbolTable::needs_rehashing()) return true; return false; --- 521,533 ---- post_safepoint_end_event(event, safepoint_id()); } bool SafepointSynchronize::is_cleanup_needed() { ! // Need a cleanup safepoint if there are too many monitors in use ! // and the monitor deflation needs to be done at a safepoint. ! if (ObjectSynchronizer::is_safepoint_deflation_needed()) return true; // Need a safepoint if some inline cache buffers is non-empty if (!InlineCacheBuffer::is_empty()) return true; if (StringTable::needs_rehashing()) return true; if (SymbolTable::needs_rehashing()) return true; return false;
*** 545,554 **** --- 546,559 ---- ParallelSPCleanupThreadClosure(DeflateMonitorCounters* counters) : _nmethod_cl(UseCodeAging ? NMethodSweeper::prepare_reset_hotness_counters() : NULL), _counters(counters) {} void do_thread(Thread* thread) { + // deflate_thread_local_monitors() handles or requests deflation of + // this thread's idle monitors. If !AsyncDeflateIdleMonitors or if + // there is a special cleanup request, deflation is handled now. + // Otherwise, async deflation is requested via a flag. ObjectSynchronizer::deflate_thread_local_monitors(thread, _counters); if (_nmethod_cl != NULL && thread->is_Java_thread() && ! thread->is_Code_cache_sweeper_thread()) { JavaThread* jt = (JavaThread*) thread; jt->nmethods_do(_nmethod_cl);
*** 577,587 **** if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_DEFLATE_MONITORS)) { const char* name = "deflating global idle monitors"; EventSafepointCleanupTask event; TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup)); ! ObjectSynchronizer::deflate_idle_monitors(_counters); post_safepoint_cleanup_task_event(event, safepoint_id, name); } if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_UPDATE_INLINE_CACHES)) { --- 582,596 ---- if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_DEFLATE_MONITORS)) { const char* name = "deflating global idle monitors"; EventSafepointCleanupTask event; TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup)); ! // AsyncDeflateIdleMonitors only uses DeflateMonitorCounters ! // when a special cleanup has been requested. ! // Note: This logging output will include global idle monitor ! // elapsed times, but not global idle monitor deflation count. ! ObjectSynchronizer::do_safepoint_work(_counters); post_safepoint_cleanup_task_event(event, safepoint_id, name); } if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_UPDATE_INLINE_CACHES)) {
< prev index next >