OpenJDK / jdk / jdk12
changeset 38727:f5f44a314a9c
8154096: Extend WhiteBox API with methods which retrieve from VM information about available GC
Reviewed-by: iignatyev, kbarrett
author | dfazunen |
---|---|
date | Mon, 30 May 2016 19:56:27 +0400 |
parents | 2c99beca1dd8 |
children | 3b18de52e85a bc9d98606cef |
files | hotspot/src/share/vm/prims/whitebox.cpp |
diffstat | 1 files changed, 47 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/share/vm/prims/whitebox.cpp Fri May 27 17:48:56 2016 +0300 +++ b/hotspot/src/share/vm/prims/whitebox.cpp Mon May 30 19:56:27 2016 +0400 @@ -278,6 +278,49 @@ (size_t) magnitude, (size_t) iterations); WB_END +static const jint serial_code = 1; +static const jint parallel_code = 2; +static const jint cms_code = 4; +static const jint g1_code = 8; + +WB_ENTRY(jint, WB_CurrentGC(JNIEnv* env, jobject o, jobject obj)) + if (UseSerialGC) { + return serial_code; + } else if (UseParallelGC || UseParallelOldGC) { + return parallel_code; + } if (UseConcMarkSweepGC) { + return cms_code; + } else if (UseG1GC) { + return g1_code; + } + ShouldNotReachHere(); + return 0; +WB_END + +WB_ENTRY(jint, WB_AllSupportedGC(JNIEnv* env, jobject o, jobject obj)) +#if INCLUDE_ALL_GCS + return serial_code | parallel_code | cms_code | g1_code; +#else + return serial_code; +#endif // INCLUDE_ALL_GCS +WB_END + +WB_ENTRY(jboolean, WB_GCSelectedByErgo(JNIEnv* env, jobject o, jobject obj)) + if (UseSerialGC) { + return FLAG_IS_ERGO(UseSerialGC); + } else if (UseParallelGC) { + return FLAG_IS_ERGO(UseParallelGC); + } else if (UseParallelOldGC) { + return FLAG_IS_ERGO(UseParallelOldGC); + } else if (UseConcMarkSweepGC) { + return FLAG_IS_ERGO(UseConcMarkSweepGC); + } else if (UseG1GC) { + return FLAG_IS_ERGO(UseG1GC); + } + ShouldNotReachHere(); + return false; +WB_END + WB_ENTRY(jboolean, WB_isObjectInOldGen(JNIEnv* env, jobject o, jobject obj)) oop p = JNIHandles::resolve(obj); #if INCLUDE_ALL_GCS @@ -1833,7 +1876,10 @@ {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches }, {CC"addCompilerDirective", CC"(Ljava/lang/String;)I", (void*)&WB_AddCompilerDirective }, - {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective }, + {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective }, + {CC"currentGC", CC"()I", (void*)&WB_CurrentGC}, + {CC"allSupportedGC", CC"()I", (void*)&WB_AllSupportedGC}, + {CC"gcSelectedByErgo", CC"()Z", (void*)&WB_GCSelectedByErgo}, }; #undef CC