614 if (newline) {
615 tty->cr();
616 }
617 JRT_END
618
619 JRT_ENTRY(jint, JVMCIRuntime::identity_hash_code(JavaThread* thread, oopDesc* obj))
620 return (jint) obj->identity_hash();
621 JRT_END
622
623 JRT_ENTRY(jboolean, JVMCIRuntime::thread_is_interrupted(JavaThread* thread, oopDesc* receiver, jboolean clear_interrupted))
624 Handle receiverHandle(thread, receiver);
625 // A nested ThreadsListHandle may require the Threads_lock which
626 // requires thread_in_vm which is why this method cannot be JRT_LEAF.
627 ThreadsListHandle tlh;
628
629 JavaThread* receiverThread = java_lang_Thread::thread(receiverHandle());
630 if (receiverThread == NULL || (EnableThreadSMRExtraValidityChecks && !tlh.includes(receiverThread))) {
631 // The other thread may exit during this process, which is ok so return false.
632 return JNI_FALSE;
633 } else {
634 return (jint) Thread::is_interrupted(receiverThread, clear_interrupted != 0);
635 }
636 JRT_END
637
638 JRT_ENTRY(jint, JVMCIRuntime::test_deoptimize_call_int(JavaThread* thread, int value))
639 deopt_caller();
640 return (jint) value;
641 JRT_END
642
643
644 // private static JVMCIRuntime JVMCI.initializeRuntime()
645 JVM_ENTRY_NO_ENV(jobject, JVM_GetJVMCIRuntime(JNIEnv *env, jclass c))
646 JNI_JVMCIENV(thread, env);
647 if (!EnableJVMCI) {
648 JVMCI_THROW_MSG_NULL(InternalError, "JVMCI is not enabled");
649 }
650 JVMCIENV->runtime()->initialize_HotSpotJVMCIRuntime(JVMCI_CHECK_NULL);
651 JVMCIObject runtime = JVMCIENV->runtime()->get_HotSpotJVMCIRuntime(JVMCI_CHECK_NULL);
652 return JVMCIENV->get_jobject(runtime);
653 JVM_END
654
|
614 if (newline) {
615 tty->cr();
616 }
617 JRT_END
618
619 JRT_ENTRY(jint, JVMCIRuntime::identity_hash_code(JavaThread* thread, oopDesc* obj))
620 return (jint) obj->identity_hash();
621 JRT_END
622
623 JRT_ENTRY(jboolean, JVMCIRuntime::thread_is_interrupted(JavaThread* thread, oopDesc* receiver, jboolean clear_interrupted))
624 Handle receiverHandle(thread, receiver);
625 // A nested ThreadsListHandle may require the Threads_lock which
626 // requires thread_in_vm which is why this method cannot be JRT_LEAF.
627 ThreadsListHandle tlh;
628
629 JavaThread* receiverThread = java_lang_Thread::thread(receiverHandle());
630 if (receiverThread == NULL || (EnableThreadSMRExtraValidityChecks && !tlh.includes(receiverThread))) {
631 // The other thread may exit during this process, which is ok so return false.
632 return JNI_FALSE;
633 } else {
634 return (jint) receiverThread->is_interrupted(clear_interrupted != 0);
635 }
636 JRT_END
637
638 JRT_ENTRY(jint, JVMCIRuntime::test_deoptimize_call_int(JavaThread* thread, int value))
639 deopt_caller();
640 return (jint) value;
641 JRT_END
642
643
644 // private static JVMCIRuntime JVMCI.initializeRuntime()
645 JVM_ENTRY_NO_ENV(jobject, JVM_GetJVMCIRuntime(JNIEnv *env, jclass c))
646 JNI_JVMCIENV(thread, env);
647 if (!EnableJVMCI) {
648 JVMCI_THROW_MSG_NULL(InternalError, "JVMCI is not enabled");
649 }
650 JVMCIENV->runtime()->initialize_HotSpotJVMCIRuntime(JVMCI_CHECK_NULL);
651 JVMCIObject runtime = JVMCIENV->runtime()->get_HotSpotJVMCIRuntime(JVMCI_CHECK_NULL);
652 return JVMCIENV->get_jobject(runtime);
653 JVM_END
654
|