< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page
@  rev 56576 : 8230305: Cgroups v2: Container awareness
|  Summary: Implement Cgroups v2 container awareness in hotspot
~  Reviewed-by: bobv


2113 
2114 // Checks that the library libfile has the noexecstack bit set.
2115 WB_ENTRY(jboolean, WB_CheckLibSpecifiesNoexecstack(JNIEnv* env, jobject o, jstring libfile))
2116   jboolean ret = false;
2117 #ifdef LINUX
2118   // Can't be in VM when we call JNI.
2119   ThreadToNativeFromVM ttnfv(thread);
2120   const char* lf = env->GetStringUTFChars(libfile, NULL);
2121   CHECK_JNI_EXCEPTION_(env, 0);
2122   ret = (jboolean) ElfFile::specifies_noexecstack(lf);
2123   env->ReleaseStringUTFChars(libfile, lf);
2124 #endif
2125   return ret;
2126 WB_END
2127 
2128 WB_ENTRY(jboolean, WB_IsContainerized(JNIEnv* env, jobject o))
2129   LINUX_ONLY(return OSContainer::is_containerized();)
2130   return false;
2131 WB_END
2132 














2133 WB_ENTRY(void, WB_PrintOsInfo(JNIEnv* env, jobject o))
2134   os::print_os_info(tty);
2135 WB_END
2136 
2137 // Elf decoder
2138 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
2139 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
2140   ElfFile::_do_not_cache_elf_section = true;
2141 #endif
2142 WB_END
2143 
2144 WB_ENTRY(jlong, WB_ResolvedMethodItemsCount(JNIEnv* env, jobject o))
2145   return (jlong) ResolvedMethodTable::items_count();
2146 WB_END
2147 
2148 WB_ENTRY(jint, WB_ProtectionDomainRemovedCount(JNIEnv* env, jobject o))
2149   return (jint) SystemDictionary::pd_cache_table()->removed_entries_count();
2150 WB_END
2151 
2152 WB_ENTRY(jint, WB_AotLibrariesCount(JNIEnv* env, jobject o))


2373   {CC"isCDSIncludedInVmBuild",            CC"()Z",    (void*)&WB_IsCDSIncludedInVmBuild },
2374   {CC"isJFRIncludedInVmBuild",            CC"()Z",    (void*)&WB_IsJFRIncludedInVmBuild },
2375   {CC"isJavaHeapArchiveSupported",        CC"()Z",    (void*)&WB_IsJavaHeapArchiveSupported },
2376   {CC"cdsMemoryMappingFailed",            CC"()Z",    (void*)&WB_CDSMemoryMappingFailed },
2377 
2378   {CC"clearInlineCaches0",  CC"(Z)V",                 (void*)&WB_ClearInlineCaches },
2379   {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack },
2380   {CC"addCompilerDirective",    CC"(Ljava/lang/String;)I",
2381                                                       (void*)&WB_AddCompilerDirective },
2382   {CC"removeCompilerDirective",   CC"(I)V",           (void*)&WB_RemoveCompilerDirective },
2383   {CC"isGCSupported",             CC"(I)Z",           (void*)&WB_IsGCSupported},
2384   {CC"isGCSelected",              CC"(I)Z",           (void*)&WB_IsGCSelected},
2385   {CC"isGCSelectedErgonomically", CC"()Z",            (void*)&WB_IsGCSelectedErgonomically},
2386   {CC"supportsConcurrentGCPhaseControl", CC"()Z",     (void*)&WB_SupportsConcurrentGCPhaseControl},
2387   {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
2388                                                       (void*)&WB_RequestConcurrentGCPhase},
2389   {CC"checkLibSpecifiesNoexecstack", CC"(Ljava/lang/String;)Z",
2390                                                       (void*)&WB_CheckLibSpecifiesNoexecstack},
2391   {CC"isContainerized",           CC"()Z",            (void*)&WB_IsContainerized },
2392   {CC"printOsInfo",               CC"()V",            (void*)&WB_PrintOsInfo },


2393   {CC"disableElfSectionCache",    CC"()V",            (void*)&WB_DisableElfSectionCache },
2394   {CC"resolvedMethodItemsCount",  CC"()J",            (void*)&WB_ResolvedMethodItemsCount },
2395   {CC"protectionDomainRemovedCount",   CC"()I",       (void*)&WB_ProtectionDomainRemovedCount },
2396   {CC"aotLibrariesCount", CC"()I",                    (void*)&WB_AotLibrariesCount },
2397 };
2398 
2399 
2400 #undef CC
2401 
2402 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
2403   {
2404     if (WhiteBoxAPI) {
2405       // Make sure that wbclass is loaded by the null classloader
2406       InstanceKlass* ik = InstanceKlass::cast(JNIHandles::resolve(wbclass)->klass());
2407       Handle loader(THREAD, ik->class_loader());
2408       if (loader.is_null()) {
2409         WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
2410         WhiteBox::set_used();
2411       }
2412     }


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


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