30 #include "classfile/modules.hpp" 31 #include "classfile/stringTable.hpp" 32 #include "code/codeCache.hpp" 33 #include "compiler/methodMatcher.hpp" 34 #include "compiler/directivesParser.hpp" 35 #include "jvmtifiles/jvmtiEnv.hpp" 36 #include "memory/metadataFactory.hpp" 37 #include "memory/metaspaceShared.hpp" 38 #include "memory/iterator.hpp" 39 #include "memory/resourceArea.hpp" 40 #include "memory/universe.hpp" 41 #include "memory/oopFactory.hpp" 42 #include "oops/array.hpp" 43 #include "oops/constantPool.inline.hpp" 44 #include "oops/method.inline.hpp" 45 #include "oops/objArrayKlass.hpp" 46 #include "oops/objArrayOop.inline.hpp" 47 #include "oops/oop.inline.hpp" 48 #include "oops/typeArrayOop.inline.hpp" 49 #include "prims/wbtestmethods/parserTests.hpp" 50 #include "prims/whitebox.hpp" 51 #include "runtime/arguments.hpp" 52 #include "runtime/compilationPolicy.hpp" 53 #include "runtime/deoptimization.hpp" 54 #include "runtime/handshake.hpp" 55 #include "runtime/interfaceSupport.hpp" 56 #include "runtime/javaCalls.hpp" 57 #include "runtime/jniHandles.inline.hpp" 58 #include "runtime/os.hpp" 59 #include "runtime/sweeper.hpp" 60 #include "runtime/thread.hpp" 61 #include "runtime/threadSMR.hpp" 62 #include "runtime/vm_version.hpp" 63 #include "utilities/align.hpp" 64 #include "utilities/debug.hpp" 65 #include "utilities/elfFile.hpp" 66 #include "utilities/exceptions.hpp" 67 #include "utilities/macros.hpp" 68 #if INCLUDE_CDS 69 #include "prims/cdsoffsets.hpp" 70 #endif // INCLUDE_CDS 71 #if INCLUDE_ALL_GCS 72 #include "gc/g1/concurrentMarkThread.hpp" 73 #include "gc/g1/g1CollectedHeap.inline.hpp" 74 #include "gc/g1/g1ConcurrentMark.hpp" 75 #include "gc/g1/heapRegionRemSet.hpp" 76 #include "gc/parallel/parallelScavengeHeap.inline.hpp" 77 #include "gc/parallel/adjoiningGenerations.hpp" 78 #endif // INCLUDE_ALL_GCS 79 #if INCLUDE_NMT 80 #include "services/mallocSiteTable.hpp" 81 #include "services/memTracker.hpp" 82 #include "utilities/nativeCallStack.hpp" 83 #endif // INCLUDE_NMT 84 85 #ifdef LINUX 86 #include "osContainer_linux.hpp" 87 #endif 88 89 #define SIZE_T_MAX_VALUE ((size_t) -1) 90 91 bool WhiteBox::_used = false; 92 volatile bool WhiteBox::compilation_locked = false; 93 94 class VM_WhiteBoxOperation : public VM_Operation { 95 public: 96 VM_WhiteBoxOperation() { } 97 VMOp_Type type() const { return VMOp_WhiteBoxOperation; } 98 bool allow_nested_vm_operations() const { return true; } 99 }; 100 101 102 WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj)) 103 return (jlong)(void*)JNIHandles::resolve(obj); 104 WB_END 105 106 WB_ENTRY(jint, WB_GetHeapOopSize(JNIEnv* env, jobject o)) 107 return heapOopSize; 108 WB_END 109 | 30 #include "classfile/modules.hpp" 31 #include "classfile/stringTable.hpp" 32 #include "code/codeCache.hpp" 33 #include "compiler/methodMatcher.hpp" 34 #include "compiler/directivesParser.hpp" 35 #include "jvmtifiles/jvmtiEnv.hpp" 36 #include "memory/metadataFactory.hpp" 37 #include "memory/metaspaceShared.hpp" 38 #include "memory/iterator.hpp" 39 #include "memory/resourceArea.hpp" 40 #include "memory/universe.hpp" 41 #include "memory/oopFactory.hpp" 42 #include "oops/array.hpp" 43 #include "oops/constantPool.inline.hpp" 44 #include "oops/method.inline.hpp" 45 #include "oops/objArrayKlass.hpp" 46 #include "oops/objArrayOop.inline.hpp" 47 #include "oops/oop.inline.hpp" 48 #include "oops/typeArrayOop.inline.hpp" 49 #include "prims/wbtestmethods/parserTests.hpp" 50 #include "prims/whitebox.inline.hpp" 51 #include "runtime/arguments.hpp" 52 #include "runtime/compilationPolicy.hpp" 53 #include "runtime/deoptimization.hpp" 54 #include "runtime/handshake.hpp" 55 #include "runtime/interfaceSupport.inline.hpp" 56 #include "runtime/javaCalls.hpp" 57 #include "runtime/jniHandles.inline.hpp" 58 #include "runtime/os.hpp" 59 #include "runtime/sweeper.hpp" 60 #include "runtime/thread.hpp" 61 #include "runtime/threadSMR.hpp" 62 #include "runtime/vm_version.hpp" 63 #include "utilities/align.hpp" 64 #include "utilities/debug.hpp" 65 #include "utilities/elfFile.hpp" 66 #include "utilities/exceptions.hpp" 67 #include "utilities/macros.hpp" 68 #if INCLUDE_CDS 69 #include "prims/cdsoffsets.hpp" 70 #endif // INCLUDE_CDS 71 #if INCLUDE_ALL_GCS 72 #include "gc/g1/concurrentMarkThread.hpp" 73 #include "gc/g1/g1CollectedHeap.inline.hpp" 74 #include "gc/g1/g1ConcurrentMark.hpp" 75 #include "gc/g1/heapRegionRemSet.hpp" 76 #include "gc/parallel/parallelScavengeHeap.inline.hpp" 77 #include "gc/parallel/adjoiningGenerations.hpp" 78 #endif // INCLUDE_ALL_GCS 79 #if INCLUDE_NMT 80 #include "services/mallocSiteTable.hpp" 81 #include "services/memTracker.hpp" 82 #include "utilities/nativeCallStack.hpp" 83 #endif // INCLUDE_NMT 84 85 #ifdef LINUX 86 #include "osContainer_linux.hpp" 87 #endif 88 89 #define SIZE_T_MAX_VALUE ((size_t) -1) 90 91 #define CHECK_JNI_EXCEPTION_(env, value) \ 92 do { \ 93 JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \ 94 if (HAS_PENDING_EXCEPTION) { \ 95 return(value); \ 96 } \ 97 } while (0) 98 99 #define CHECK_JNI_EXCEPTION(env) \ 100 do { \ 101 JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \ 102 if (HAS_PENDING_EXCEPTION) { \ 103 return; \ 104 } \ 105 } while (0) 106 107 bool WhiteBox::_used = false; 108 volatile bool WhiteBox::compilation_locked = false; 109 110 class VM_WhiteBoxOperation : public VM_Operation { 111 public: 112 VM_WhiteBoxOperation() { } 113 VMOp_Type type() const { return VMOp_WhiteBoxOperation; } 114 bool allow_nested_vm_operations() const { return true; } 115 }; 116 117 118 WB_ENTRY(jlong, WB_GetObjectAddress(JNIEnv* env, jobject o, jobject obj)) 119 return (jlong)(void*)JNIHandles::resolve(obj); 120 WB_END 121 122 WB_ENTRY(jint, WB_GetHeapOopSize(JNIEnv* env, jobject o)) 123 return heapOopSize; 124 WB_END 125 |