< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
rev 59757 : Add whitebox support for deflating idle monitors including ObjectSynchronizer::request_deflate_idle_monitors(); drop ObjectSynchronizer::_is_special_deflation_requested flag, functions and uses; switch to ObjectSynchronizer::request_deflate_idle_monitors() as needed; _last_async_deflation_time_ns should be set at the end of async deflation;

*** 39,48 **** --- 39,49 ---- #include "gc/shared/concurrentGCBreakpoints.hpp" #include "gc/shared/gcConfig.hpp" #include "gc/shared/genArguments.hpp" #include "gc/shared/genCollectedHeap.hpp" #include "jvmtifiles/jvmtiEnv.hpp" + #include "logging/log.hpp" #include "memory/filemap.hpp" #include "memory/heapShared.inline.hpp" #include "memory/metaspaceShared.hpp" #include "memory/metadataFactory.hpp" #include "memory/iterator.hpp"
*** 476,491 **** THROW_MSG_0(vmSymbols::java_lang_UnsupportedOperationException(), "WB_G1InConcurrentMark: G1 GC is not enabled"); WB_END WB_ENTRY(jboolean, WB_G1StartMarkCycle(JNIEnv* env, jobject o)) if (UseG1GC) { - if (AsyncDeflateIdleMonitors) { - // AsyncDeflateIdleMonitors needs to know when System.gc() or - // the equivalent is called so any special clean up can be done - // at a safepoint, e.g., TestHumongousClassLoader.java. - ObjectSynchronizer::set_is_special_deflation_requested(true); - } G1CollectedHeap* g1h = G1CollectedHeap::heap(); if (!g1h->concurrent_mark()->cm_thread()->during_cycle()) { g1h->collect(GCCause::_wb_conc_mark); return true; } --- 477,486 ----
*** 1453,1468 **** jchar* name = java_lang_String::as_unicode_string(JNIHandles::resolve(javaString), len, CHECK_false); return (StringTable::lookup(name, len) != NULL); WB_END WB_ENTRY(void, WB_FullGC(JNIEnv* env, jobject o)) - if (AsyncDeflateIdleMonitors) { - // AsyncDeflateIdleMonitors needs to know when System.gc() or - // the equivalent is called so any special clean up can be done - // at a safepoint, e.g., TestHumongousClassLoader.java. - ObjectSynchronizer::set_is_special_deflation_requested(true); - } Universe::heap()->soft_ref_policy()->set_should_clear_all_soft_refs(true); Universe::heap()->collect(GCCause::_wb_full_gc); #if INCLUDE_G1GC if (UseG1GC) { // Needs to be cleared explicitly for G1 --- 1448,1457 ----
*** 1807,1824 **** WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj)) oop obj_oop = JNIHandles::resolve(obj); return (jboolean) obj_oop->mark().has_monitor(); WB_END WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb)) - if (AsyncDeflateIdleMonitors) { - // AsyncDeflateIdleMonitors needs to know when System.gc() or - // the equivalent is called so any special clean up can be done - // at a safepoint, e.g., TestRTMTotalCountIncrRate.java or - // TestUseRTMForStackLocks.java. - ObjectSynchronizer::set_is_special_deflation_requested(true); - } VM_ForceSafepoint force_safepoint_op; VMThread::execute(&force_safepoint_op); WB_END WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass)) --- 1796,1811 ---- WB_ENTRY(jboolean, WB_IsMonitorInflated(JNIEnv* env, jobject wb, jobject obj)) oop obj_oop = JNIHandles::resolve(obj); return (jboolean) obj_oop->mark().has_monitor(); WB_END + WB_ENTRY(jboolean, WB_DeflateIdleMonitors(JNIEnv* env, jobject wb)) + log_info(monitorinflation)("WhiteBox initiated DeflateIdleMonitors"); + return ObjectSynchronizer::request_deflate_idle_monitors(); + WB_END + WB_ENTRY(void, WB_ForceSafepoint(JNIEnv* env, jobject wb)) VM_ForceSafepoint force_safepoint_op; VMThread::execute(&force_safepoint_op); WB_END WB_ENTRY(jlong, WB_GetConstantPool(JNIEnv* env, jobject wb, jclass klass))
*** 2478,2487 **** --- 2465,2475 ---- (void*)&WB_AddModuleExportsToAllUnnamed }, {CC"AddModuleExportsToAll", CC"(Ljava/lang/Object;Ljava/lang/String;)V", (void*)&WB_AddModuleExportsToAll }, {CC"assertMatchingSafepointCalls", CC"(ZZ)V", (void*)&WB_AssertMatchingSafepointCalls }, {CC"assertSpecialLock", CC"(ZZ)V", (void*)&WB_AssertSpecialLock }, + {CC"deflateIdleMonitors", CC"()Z", (void*)&WB_DeflateIdleMonitors }, {CC"isMonitorInflated0", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated }, {CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint }, {CC"getConstantPool0", CC"(Ljava/lang/Class;)J", (void*)&WB_GetConstantPool }, {CC"getConstantPoolCacheIndexTag0", CC"()I", (void*)&WB_GetConstantPoolCacheIndexTag}, {CC"getConstantPoolCacheLength0", CC"(Ljava/lang/Class;)I", (void*)&WB_GetConstantPoolCacheLength},
< prev index next >