< prev index next >

src/hotspot/share/prims/whitebox.cpp

Print this page




  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 


< prev index next >