< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
@  rev 56288 : 8230305: Cgroups v2: Container awareness
|  Reviewed-by: bobv
~


2102 
2103 // Checks that the library libfile has the noexecstack bit set.
2104 WB_ENTRY(jboolean, WB_CheckLibSpecifiesNoexecstack(JNIEnv* env, jobject o, jstring libfile))
2105   jboolean ret = false;
2106 #ifdef LINUX
2107   // Can't be in VM when we call JNI.
2108   ThreadToNativeFromVM ttnfv(thread);
2109   const char* lf = env->GetStringUTFChars(libfile, NULL);
2110   CHECK_JNI_EXCEPTION_(env, 0);
2111   ret = (jboolean) ElfFile::specifies_noexecstack(lf);
2112   env->ReleaseStringUTFChars(libfile, lf);
2113 #endif
2114   return ret;
2115 WB_END
2116 
2117 WB_ENTRY(jboolean, WB_IsContainerized(JNIEnv* env, jobject o))
2118   LINUX_ONLY(return OSContainer::is_containerized();)
2119   return false;
2120 WB_END
2121 














2122 WB_ENTRY(void, WB_PrintOsInfo(JNIEnv* env, jobject o))
2123   os::print_os_info(tty);
2124 WB_END
2125 
2126 // Elf decoder
2127 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
2128 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
2129   ElfFile::_do_not_cache_elf_section = true;
2130 #endif
2131 WB_END
2132 
2133 WB_ENTRY(jlong, WB_ResolvedMethodItemsCount(JNIEnv* env, jobject o))
2134   return (jlong) ResolvedMethodTable::items_count();
2135 WB_END
2136 
2137 WB_ENTRY(jint, WB_ProtectionDomainRemovedCount(JNIEnv* env, jobject o))
2138   return (jint) SystemDictionary::pd_cache_table()->removed_entries_count();
2139 WB_END
2140 
2141 WB_ENTRY(jint, WB_AotLibrariesCount(JNIEnv* env, jobject o))


2361   {CC"isCDSIncludedInVmBuild",            CC"()Z",    (void*)&WB_IsCDSIncludedInVmBuild },
2362   {CC"isJFRIncludedInVmBuild",            CC"()Z",    (void*)&WB_IsJFRIncludedInVmBuild },
2363   {CC"isJavaHeapArchiveSupported",        CC"()Z",    (void*)&WB_IsJavaHeapArchiveSupported },
2364   {CC"cdsMemoryMappingFailed",            CC"()Z",    (void*)&WB_CDSMemoryMappingFailed },
2365 
2366   {CC"clearInlineCaches0",  CC"(Z)V",                 (void*)&WB_ClearInlineCaches },
2367   {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack },
2368   {CC"addCompilerDirective",    CC"(Ljava/lang/String;)I",
2369                                                       (void*)&WB_AddCompilerDirective },
2370   {CC"removeCompilerDirective",   CC"(I)V",           (void*)&WB_RemoveCompilerDirective },
2371   {CC"isGCSupported",             CC"(I)Z",           (void*)&WB_IsGCSupported},
2372   {CC"isGCSelected",              CC"(I)Z",           (void*)&WB_IsGCSelected},
2373   {CC"isGCSelectedErgonomically", CC"()Z",            (void*)&WB_IsGCSelectedErgonomically},
2374   {CC"supportsConcurrentGCPhaseControl", CC"()Z",     (void*)&WB_SupportsConcurrentGCPhaseControl},
2375   {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
2376                                                       (void*)&WB_RequestConcurrentGCPhase},
2377   {CC"checkLibSpecifiesNoexecstack", CC"(Ljava/lang/String;)Z",
2378                                                       (void*)&WB_CheckLibSpecifiesNoexecstack},
2379   {CC"isContainerized",           CC"()Z",            (void*)&WB_IsContainerized },
2380   {CC"printOsInfo",               CC"()V",            (void*)&WB_PrintOsInfo },


2381   {CC"disableElfSectionCache",    CC"()V",            (void*)&WB_DisableElfSectionCache },
2382   {CC"resolvedMethodItemsCount",  CC"()J",            (void*)&WB_ResolvedMethodItemsCount },
2383   {CC"protectionDomainRemovedCount",   CC"()I",       (void*)&WB_ProtectionDomainRemovedCount },
2384   {CC"aotLibrariesCount", CC"()I",                    (void*)&WB_AotLibrariesCount },
2385 };
2386 
2387 
2388 #undef CC
2389 
2390 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
2391   {
2392     if (WhiteBoxAPI) {
2393       // Make sure that wbclass is loaded by the null classloader
2394       InstanceKlass* ik = InstanceKlass::cast(JNIHandles::resolve(wbclass)->klass());
2395       Handle loader(THREAD, ik->class_loader());
2396       if (loader.is_null()) {
2397         WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
2398         WhiteBox::set_used();
2399       }
2400     }


2102 
2103 // Checks that the library libfile has the noexecstack bit set.
2104 WB_ENTRY(jboolean, WB_CheckLibSpecifiesNoexecstack(JNIEnv* env, jobject o, jstring libfile))
2105   jboolean ret = false;
2106 #ifdef LINUX
2107   // Can't be in VM when we call JNI.
2108   ThreadToNativeFromVM ttnfv(thread);
2109   const char* lf = env->GetStringUTFChars(libfile, NULL);
2110   CHECK_JNI_EXCEPTION_(env, 0);
2111   ret = (jboolean) ElfFile::specifies_noexecstack(lf);
2112   env->ReleaseStringUTFChars(libfile, lf);
2113 #endif
2114   return ret;
2115 WB_END
2116 
2117 WB_ENTRY(jboolean, WB_IsContainerized(JNIEnv* env, jobject o))
2118   LINUX_ONLY(return OSContainer::is_containerized();)
2119   return false;
2120 WB_END
2121 
2122 WB_ENTRY(jobject, WB_CgroupType(JNIEnv* env, jobject o))
2123   jstring cg_type = NULL;
2124 #ifdef LINUX
2125 #ifndef PRODUCT
2126   const char* p = OSContainer::cg_type();
2127   ThreadToNativeFromVM ttn(thread);
2128   cg_type = env->NewStringUTF(p);
2129 
2130   CHECK_JNI_EXCEPTION_(env, NULL);
2131 #endif
2132 #endif
2133   return cg_type;
2134 WB_END
2135 
2136 WB_ENTRY(void, WB_PrintOsInfo(JNIEnv* env, jobject o))
2137   os::print_os_info(tty);
2138 WB_END
2139 
2140 // Elf decoder
2141 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
2142 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
2143   ElfFile::_do_not_cache_elf_section = true;
2144 #endif
2145 WB_END
2146 
2147 WB_ENTRY(jlong, WB_ResolvedMethodItemsCount(JNIEnv* env, jobject o))
2148   return (jlong) ResolvedMethodTable::items_count();
2149 WB_END
2150 
2151 WB_ENTRY(jint, WB_ProtectionDomainRemovedCount(JNIEnv* env, jobject o))
2152   return (jint) SystemDictionary::pd_cache_table()->removed_entries_count();
2153 WB_END
2154 
2155 WB_ENTRY(jint, WB_AotLibrariesCount(JNIEnv* env, jobject o))


2375   {CC"isCDSIncludedInVmBuild",            CC"()Z",    (void*)&WB_IsCDSIncludedInVmBuild },
2376   {CC"isJFRIncludedInVmBuild",            CC"()Z",    (void*)&WB_IsJFRIncludedInVmBuild },
2377   {CC"isJavaHeapArchiveSupported",        CC"()Z",    (void*)&WB_IsJavaHeapArchiveSupported },
2378   {CC"cdsMemoryMappingFailed",            CC"()Z",    (void*)&WB_CDSMemoryMappingFailed },
2379 
2380   {CC"clearInlineCaches0",  CC"(Z)V",                 (void*)&WB_ClearInlineCaches },
2381   {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack },
2382   {CC"addCompilerDirective",    CC"(Ljava/lang/String;)I",
2383                                                       (void*)&WB_AddCompilerDirective },
2384   {CC"removeCompilerDirective",   CC"(I)V",           (void*)&WB_RemoveCompilerDirective },
2385   {CC"isGCSupported",             CC"(I)Z",           (void*)&WB_IsGCSupported},
2386   {CC"isGCSelected",              CC"(I)Z",           (void*)&WB_IsGCSelected},
2387   {CC"isGCSelectedErgonomically", CC"()Z",            (void*)&WB_IsGCSelectedErgonomically},
2388   {CC"supportsConcurrentGCPhaseControl", CC"()Z",     (void*)&WB_SupportsConcurrentGCPhaseControl},
2389   {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
2390                                                       (void*)&WB_RequestConcurrentGCPhase},
2391   {CC"checkLibSpecifiesNoexecstack", CC"(Ljava/lang/String;)Z",
2392                                                       (void*)&WB_CheckLibSpecifiesNoexecstack},
2393   {CC"isContainerized",           CC"()Z",            (void*)&WB_IsContainerized },
2394   {CC"printOsInfo",               CC"()V",            (void*)&WB_PrintOsInfo },
2395   {CC"cgroupType",                        CC"()Ljava/lang/String;",
2396                                                       (void*)&WB_CgroupType },
2397   {CC"disableElfSectionCache",    CC"()V",            (void*)&WB_DisableElfSectionCache },
2398   {CC"resolvedMethodItemsCount",  CC"()J",            (void*)&WB_ResolvedMethodItemsCount },
2399   {CC"protectionDomainRemovedCount",   CC"()I",       (void*)&WB_ProtectionDomainRemovedCount },
2400   {CC"aotLibrariesCount", CC"()I",                    (void*)&WB_AotLibrariesCount },
2401 };
2402 
2403 
2404 #undef CC
2405 
2406 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
2407   {
2408     if (WhiteBoxAPI) {
2409       // Make sure that wbclass is loaded by the null classloader
2410       InstanceKlass* ik = InstanceKlass::cast(JNIHandles::resolve(wbclass)->klass());
2411       Handle loader(THREAD, ik->class_loader());
2412       if (loader.is_null()) {
2413         WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
2414         WhiteBox::set_used();
2415       }
2416     }
< prev index next >