< prev index next >

src/hotspot/share/runtime/serviceThread.cpp

Print this page
rev 56044 : imported patch 8230184.patch
rev 56046 : v2.00 -> v2.05 (CR5/v2.05/8-for-jdk13) patches combined into one; merge with 8229212.patch; merge with jdk-14+11; merge with 8230184.patch.
rev 56049 : Merge the remainder of the lock-free monitor list changes from v2.06 with v2.06a and v2.06b after running the changes through the edit scripts; merge pieces from dcubed.monitor_deflate_conc.v2.06d in dcubed.monitor_deflate_conc.v2.06[ac]; merge pieces from dcubed.monitor_deflate_conc.v2.06e into dcubed.monitor_deflate_conc.v2.06c; merge with jdk-14+11; test work around for test/jdk/tools/jlink/multireleasejar/JLinkMultiReleaseJarTest.java should not been needed anymore.

*** 188,216 **** if (deflate_idle_monitors) { // Deflate any global idle monitors. ObjectSynchronizer::deflate_global_idle_monitors_using_JT(); - // deflate_per_thread_idle_monitors_using_JT() is called by - // each JavaThread from ObjectSynchronizer::omAlloc() as needed. int count = 0; for (JavaThreadIteratorWithHandle jtiwh; JavaThread *jt = jtiwh.next(); ) { ! if (jt->om_in_use_count > 0) { ! // This JavaThread is using monitors so request deflation. ! jt->om_request_deflation = true; count++; } } if (count > 0) { ! log_debug(monitorinflation)("requesting async deflation of idle monitors for %d thread(s).", count); } // The ServiceThread's async deflation request has been processed. ObjectSynchronizer::set_is_async_deflation_requested(false); - - // The global in-use list was handled above, but the request won't - // be complete until the JavaThreads have handled their in-use - // lists. This is the nature of an async deflation request. } } } bool ServiceThread::is_service_thread(Thread* thread) { --- 188,212 ---- if (deflate_idle_monitors) { // Deflate any global idle monitors. ObjectSynchronizer::deflate_global_idle_monitors_using_JT(); int count = 0; for (JavaThreadIteratorWithHandle jtiwh; JavaThread *jt = jtiwh.next(); ) { ! if (jt->om_in_use_count > 0 && !jt->is_exiting()) { ! // This JavaThread is using ObjectMonitors so deflate any that ! // are idle unless this JavaThread is exiting; do not race with ! // ObjectSynchronizer::om_flush(). ! ObjectSynchronizer::deflate_per_thread_idle_monitors_using_JT(jt); count++; } } if (count > 0) { ! log_debug(monitorinflation)("did async deflation of idle monitors for %d thread(s).", count); } // The ServiceThread's async deflation request has been processed. ObjectSynchronizer::set_is_async_deflation_requested(false); } } } bool ServiceThread::is_service_thread(Thread* thread) {
< prev index next >