Mercurial > hg > graal-jvmci-8
changeset 22993:e9a7f132cec3
8068272: Extend WhiteBox API with methods that check monitor state and force safepoint
Reviewed-by: kvn, iignatyev
author | bmoloden |
---|---|
date | Thu, 30 Apr 2015 11:47:53 -0700 |
parents | 7bc99c1a5fee |
children | 9041e030d11f |
files | src/share/vm/prims/whitebox.cpp test/testlibrary/whitebox/sun/hotspot/WhiteBox.java |
diffstat | 2 files changed, 14 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/prims/whitebox.cpp Thu Apr 30 11:45:20 2015 -0700 +++ b/src/share/vm/prims/whitebox.cpp Thu Apr 30 11:47:53 2015 -0700 @@ -891,6 +891,16 @@ return (jlong) MetaspaceGC::capacity_until_GC(); WB_END +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)) + VM_ForceSafepoint force_safepoint_op; + VMThread::execute(&force_safepoint_op); +WB_END + //Some convenience methods to deal with objects from java int WhiteBox::offset_for_field(const char* field_name, oop object, Symbol* signature_symbol) { @@ -1076,6 +1086,8 @@ {CC"getCPUFeatures", CC"()Ljava/lang/String;", (void*)&WB_GetCPUFeatures }, {CC"getNMethod", CC"(Ljava/lang/reflect/Executable;Z)[Ljava/lang/Object;", (void*)&WB_GetNMethod }, + {CC"isMonitorInflated", CC"(Ljava/lang/Object;)Z", (void*)&WB_IsMonitorInflated }, + {CC"forceSafepoint", CC"()V", (void*)&WB_ForceSafepoint }, }; #undef CC
--- a/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Thu Apr 30 11:45:20 2015 -0700 +++ b/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Thu Apr 30 11:47:53 2015 -0700 @@ -87,6 +87,8 @@ return isClassAlive0(name.replace('.', '/')); } private native boolean isClassAlive0(String name); + public native boolean isMonitorInflated(Object obj); + public native void forceSafepoint(); // Resource/Class Lookup Cache public native boolean classKnownToNotExist(ClassLoader loader, String name);