< prev index next >

src/hotspot/share/jvmci/jniAccessMark.inline.hpp

Print this page




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
  26 #define SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
  27 
  28 #include "code/nmethod.hpp"
  29 #include "jvmci/jvmciEnv.hpp"
  30 #include "runtime/interfaceSupport.inline.hpp"
  31 
  32 // Wrapper for a JNI call into the JVMCI shared library.
  33 // This performs a ThreadToNativeFromVM transition so that the VM
  34 // will not be blocked if the call takes a long time (e.g., due
  35 // to a GC in the shared library).
  36 class JNIAccessMark : public StackObj {
  37  private:
  38   ThreadToNativeFromVM ttnfv;
  39   HandleMark hm;
  40   JNIEnv* _env;
  41  public:
  42   inline JNIAccessMark(JVMCIEnv* jvmci_env) :
  43     ttnfv(JavaThread::current()), hm(JavaThread::current()) {
  44     _env = jvmci_env->_env;
  45   }
  46   JNIEnv* env() const { return _env; }
  47   JNIEnv* operator () () const { return _env; }
  48 };
  49 
  50 #endif // SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP


  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
  26 #define SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
  27 
  28 #include "code/nmethod.hpp"
  29 #include "jvmci/jvmciEnv.hpp"
  30 #include "runtime/interfaceSupport.inline.hpp"
  31 
  32 // Wrapper for a JNI call into the JVMCI shared library.
  33 // This performs a ThreadToNativeFromVM transition so that the VM
  34 // will not be blocked if the call takes a long time (e.g., due
  35 // to a GC in the shared library).
  36 class JNIAccessMark : public StackObj {
  37  private:
  38   ThreadToNativeFromVM _ttnfv;
  39   HandleMark _hm;
  40   JNIEnv* _env;
  41  public:
  42   inline JNIAccessMark(JVMCIEnv* jvmci_env, JavaThread* thread=JavaThread::current()) :
  43     _ttnfv(thread), _hm(thread) {
  44     _env = jvmci_env->_env;
  45   }
  46   JNIEnv* env() const { return _env; }
  47   JNIEnv* operator () () const { return _env; }
  48 };
  49 
  50 #endif // SHARE_JVMCI_JNIACCESSMARK_INLINE_HPP
< prev index next >