31 #include "classfile/stringTable.hpp"
32 #include "code/codeCache.hpp"
33 #include "compiler/methodMatcher.hpp"
34 #include "compiler/directivesParser.hpp"
35 #include "gc/shared/gcConfig.hpp"
36 #include "gc/shared/genCollectedHeap.hpp"
37 #include "jvmtifiles/jvmtiEnv.hpp"
38 #include "memory/metadataFactory.hpp"
39 #include "memory/metaspaceShared.hpp"
40 #include "memory/iterator.hpp"
41 #include "memory/resourceArea.hpp"
42 #include "memory/universe.hpp"
43 #include "memory/oopFactory.hpp"
44 #include "oops/array.hpp"
45 #include "oops/constantPool.inline.hpp"
46 #include "oops/method.inline.hpp"
47 #include "oops/objArrayKlass.hpp"
48 #include "oops/objArrayOop.inline.hpp"
49 #include "oops/oop.inline.hpp"
50 #include "oops/typeArrayOop.inline.hpp"
51 #include "prims/wbtestmethods/parserTests.hpp"
52 #include "prims/whitebox.inline.hpp"
53 #include "runtime/arguments.hpp"
54 #include "runtime/compilationPolicy.hpp"
55 #include "runtime/deoptimization.hpp"
56 #include "runtime/fieldDescriptor.inline.hpp"
57 #include "runtime/flags/jvmFlag.hpp"
58 #include "runtime/frame.inline.hpp"
59 #include "runtime/handshake.hpp"
60 #include "runtime/interfaceSupport.inline.hpp"
61 #include "runtime/javaCalls.hpp"
62 #include "runtime/jniHandles.inline.hpp"
63 #include "runtime/os.hpp"
64 #include "runtime/sweeper.hpp"
65 #include "runtime/thread.hpp"
66 #include "runtime/threadSMR.hpp"
67 #include "runtime/vm_version.hpp"
68 #include "services/memoryService.hpp"
69 #include "utilities/align.hpp"
70 #include "utilities/debug.hpp"
1955 #endif
1956 return ret;
1957 WB_END
1958
1959 WB_ENTRY(jboolean, WB_IsContainerized(JNIEnv* env, jobject o))
1960 LINUX_ONLY(return OSContainer::is_containerized();)
1961 return false;
1962 WB_END
1963
1964 WB_ENTRY(void, WB_PrintOsInfo(JNIEnv* env, jobject o))
1965 os::print_os_info(tty);
1966 WB_END
1967
1968 // Elf decoder
1969 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
1970 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
1971 ElfFile::_do_not_cache_elf_section = true;
1972 #endif
1973 WB_END
1974
1975
1976 #define CC (char*)
1977
1978 static JNINativeMethod methods[] = {
1979 {CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
1980 {CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
1981 {CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
1982 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
1983 {CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
1984 {CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
1985 {CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
1986 {CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
1987 {CC"getHeapAlignment", CC"()J", (void*)&WB_GetHeapAlignment},
1988 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
1989 {CC"parseCommandLine0",
1990 CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1991 (void*) &WB_ParseCommandLine
1992 },
1993 {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1994 (void*)&WB_AddToBootstrapClassLoaderSearch},
2176 {CC"isJavaHeapArchiveSupported", CC"()Z", (void*)&WB_IsJavaHeapArchiveSupported },
2177
2178 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches },
2179 {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack },
2180 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I",
2181 (void*)&WB_AddCompilerDirective },
2182 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective },
2183 {CC"isGCSupported", CC"(I)Z", (void*)&WB_IsGCSupported},
2184 {CC"isGCSelected", CC"(I)Z", (void*)&WB_IsGCSelected},
2185 {CC"isGCSelectedErgonomically", CC"()Z", (void*)&WB_IsGCSelectedErgonomically},
2186 {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl},
2187 {CC"getConcurrentGCPhases", CC"()[Ljava/lang/String;",
2188 (void*)&WB_GetConcurrentGCPhases},
2189 {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
2190 (void*)&WB_RequestConcurrentGCPhase},
2191 {CC"checkLibSpecifiesNoexecstack", CC"(Ljava/lang/String;)Z",
2192 (void*)&WB_CheckLibSpecifiesNoexecstack},
2193 {CC"isContainerized", CC"()Z", (void*)&WB_IsContainerized },
2194 {CC"printOsInfo", CC"()V", (void*)&WB_PrintOsInfo },
2195 {CC"disableElfSectionCache", CC"()V", (void*)&WB_DisableElfSectionCache },
2196 };
2197
2198
2199 #undef CC
2200
2201 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
2202 {
2203 if (WhiteBoxAPI) {
2204 // Make sure that wbclass is loaded by the null classloader
2205 InstanceKlass* ik = InstanceKlass::cast(JNIHandles::resolve(wbclass)->klass());
2206 Handle loader(THREAD, ik->class_loader());
2207 if (loader.is_null()) {
2208 WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
2209 WhiteBox::set_used();
2210 }
2211 }
2212 }
2213 JVM_END
|
31 #include "classfile/stringTable.hpp"
32 #include "code/codeCache.hpp"
33 #include "compiler/methodMatcher.hpp"
34 #include "compiler/directivesParser.hpp"
35 #include "gc/shared/gcConfig.hpp"
36 #include "gc/shared/genCollectedHeap.hpp"
37 #include "jvmtifiles/jvmtiEnv.hpp"
38 #include "memory/metadataFactory.hpp"
39 #include "memory/metaspaceShared.hpp"
40 #include "memory/iterator.hpp"
41 #include "memory/resourceArea.hpp"
42 #include "memory/universe.hpp"
43 #include "memory/oopFactory.hpp"
44 #include "oops/array.hpp"
45 #include "oops/constantPool.inline.hpp"
46 #include "oops/method.inline.hpp"
47 #include "oops/objArrayKlass.hpp"
48 #include "oops/objArrayOop.inline.hpp"
49 #include "oops/oop.inline.hpp"
50 #include "oops/typeArrayOop.inline.hpp"
51 #include "prims/resolvedMethodTable.hpp"
52 #include "prims/wbtestmethods/parserTests.hpp"
53 #include "prims/whitebox.inline.hpp"
54 #include "runtime/arguments.hpp"
55 #include "runtime/compilationPolicy.hpp"
56 #include "runtime/deoptimization.hpp"
57 #include "runtime/fieldDescriptor.inline.hpp"
58 #include "runtime/flags/jvmFlag.hpp"
59 #include "runtime/frame.inline.hpp"
60 #include "runtime/handshake.hpp"
61 #include "runtime/interfaceSupport.inline.hpp"
62 #include "runtime/javaCalls.hpp"
63 #include "runtime/jniHandles.inline.hpp"
64 #include "runtime/os.hpp"
65 #include "runtime/sweeper.hpp"
66 #include "runtime/thread.hpp"
67 #include "runtime/threadSMR.hpp"
68 #include "runtime/vm_version.hpp"
69 #include "services/memoryService.hpp"
70 #include "utilities/align.hpp"
71 #include "utilities/debug.hpp"
1956 #endif
1957 return ret;
1958 WB_END
1959
1960 WB_ENTRY(jboolean, WB_IsContainerized(JNIEnv* env, jobject o))
1961 LINUX_ONLY(return OSContainer::is_containerized();)
1962 return false;
1963 WB_END
1964
1965 WB_ENTRY(void, WB_PrintOsInfo(JNIEnv* env, jobject o))
1966 os::print_os_info(tty);
1967 WB_END
1968
1969 // Elf decoder
1970 WB_ENTRY(void, WB_DisableElfSectionCache(JNIEnv* env))
1971 #if !defined(_WINDOWS) && !defined(__APPLE__) && !defined(_AIX)
1972 ElfFile::_do_not_cache_elf_section = true;
1973 #endif
1974 WB_END
1975
1976 WB_ENTRY(jint, WB_ResolvedMethodRemovedCount(JNIEnv* env, jobject o))
1977 return (jint) ResolvedMethodTable::removed_entries_count();
1978 WB_END
1979
1980
1981 #define CC (char*)
1982
1983 static JNINativeMethod methods[] = {
1984 {CC"getObjectAddress0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress },
1985 {CC"getObjectSize0", CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectSize },
1986 {CC"isObjectInOldGen0", CC"(Ljava/lang/Object;)Z", (void*)&WB_isObjectInOldGen },
1987 {CC"getHeapOopSize", CC"()I", (void*)&WB_GetHeapOopSize },
1988 {CC"getVMPageSize", CC"()I", (void*)&WB_GetVMPageSize },
1989 {CC"getVMAllocationGranularity", CC"()J", (void*)&WB_GetVMAllocationGranularity },
1990 {CC"getVMLargePageSize", CC"()J", (void*)&WB_GetVMLargePageSize},
1991 {CC"getHeapSpaceAlignment", CC"()J", (void*)&WB_GetHeapSpaceAlignment},
1992 {CC"getHeapAlignment", CC"()J", (void*)&WB_GetHeapAlignment},
1993 {CC"isClassAlive0", CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive },
1994 {CC"parseCommandLine0",
1995 CC"(Ljava/lang/String;C[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
1996 (void*) &WB_ParseCommandLine
1997 },
1998 {CC"addToBootstrapClassLoaderSearch0", CC"(Ljava/lang/String;)V",
1999 (void*)&WB_AddToBootstrapClassLoaderSearch},
2181 {CC"isJavaHeapArchiveSupported", CC"()Z", (void*)&WB_IsJavaHeapArchiveSupported },
2182
2183 {CC"clearInlineCaches0", CC"(Z)V", (void*)&WB_ClearInlineCaches },
2184 {CC"handshakeWalkStack", CC"(Ljava/lang/Thread;Z)I", (void*)&WB_HandshakeWalkStack },
2185 {CC"addCompilerDirective", CC"(Ljava/lang/String;)I",
2186 (void*)&WB_AddCompilerDirective },
2187 {CC"removeCompilerDirective", CC"(I)V", (void*)&WB_RemoveCompilerDirective },
2188 {CC"isGCSupported", CC"(I)Z", (void*)&WB_IsGCSupported},
2189 {CC"isGCSelected", CC"(I)Z", (void*)&WB_IsGCSelected},
2190 {CC"isGCSelectedErgonomically", CC"()Z", (void*)&WB_IsGCSelectedErgonomically},
2191 {CC"supportsConcurrentGCPhaseControl", CC"()Z", (void*)&WB_SupportsConcurrentGCPhaseControl},
2192 {CC"getConcurrentGCPhases", CC"()[Ljava/lang/String;",
2193 (void*)&WB_GetConcurrentGCPhases},
2194 {CC"requestConcurrentGCPhase0", CC"(Ljava/lang/String;)Z",
2195 (void*)&WB_RequestConcurrentGCPhase},
2196 {CC"checkLibSpecifiesNoexecstack", CC"(Ljava/lang/String;)Z",
2197 (void*)&WB_CheckLibSpecifiesNoexecstack},
2198 {CC"isContainerized", CC"()Z", (void*)&WB_IsContainerized },
2199 {CC"printOsInfo", CC"()V", (void*)&WB_PrintOsInfo },
2200 {CC"disableElfSectionCache", CC"()V", (void*)&WB_DisableElfSectionCache },
2201 {CC"resolvedMethodRemovedCount", CC"()I", (void*)&WB_ResolvedMethodRemovedCount },
2202 };
2203
2204
2205 #undef CC
2206
2207 JVM_ENTRY(void, JVM_RegisterWhiteBoxMethods(JNIEnv* env, jclass wbclass))
2208 {
2209 if (WhiteBoxAPI) {
2210 // Make sure that wbclass is loaded by the null classloader
2211 InstanceKlass* ik = InstanceKlass::cast(JNIHandles::resolve(wbclass)->klass());
2212 Handle loader(THREAD, ik->class_loader());
2213 if (loader.is_null()) {
2214 WhiteBox::register_methods(env, wbclass, thread, methods, sizeof(methods) / sizeof(methods[0]));
2215 WhiteBox::set_used();
2216 }
2217 }
2218 }
2219 JVM_END
|