< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page




  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
< prev index next >