changeset 22520 | b9e88eed82d7 |
parent 22190 | d306a75a70d3 |
child 22532 | 1fc87ea15795 |
22519:924605caa9a8 | 22520:b9e88eed82d7 |
---|---|
431 JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name)) |
431 JNI_ENTRY(jclass, jni_FindClass(JNIEnv *env, const char *name)) |
432 JNIWrapper("FindClass"); |
432 JNIWrapper("FindClass"); |
433 #ifndef USDT2 |
433 #ifndef USDT2 |
434 DTRACE_PROBE2(hotspot_jni, FindClass__entry, env, name); |
434 DTRACE_PROBE2(hotspot_jni, FindClass__entry, env, name); |
435 #else /* USDT2 */ |
435 #else /* USDT2 */ |
436 HOTSPOT_JNI_FINDCLASS_ENTRY( |
436 HOTSPOT_JNI_FINDCLASS_ENTRY(env, (char *)name); |
437 env, (char *)name); |
|
438 #endif /* USDT2 */ |
437 #endif /* USDT2 */ |
439 |
438 |
440 jclass result = NULL; |
439 jclass result = NULL; |
441 DT_RETURN_MARK(FindClass, jclass, (const jclass&)result); |
440 DT_RETURN_MARK(FindClass, jclass, (const jclass&)result); |
442 |
441 |
509 JNI_ENTRY(jmethodID, jni_FromReflectedMethod(JNIEnv *env, jobject method)) |
508 JNI_ENTRY(jmethodID, jni_FromReflectedMethod(JNIEnv *env, jobject method)) |
510 JNIWrapper("FromReflectedMethod"); |
509 JNIWrapper("FromReflectedMethod"); |
511 #ifndef USDT2 |
510 #ifndef USDT2 |
512 DTRACE_PROBE2(hotspot_jni, FromReflectedMethod__entry, env, method); |
511 DTRACE_PROBE2(hotspot_jni, FromReflectedMethod__entry, env, method); |
513 #else /* USDT2 */ |
512 #else /* USDT2 */ |
514 HOTSPOT_JNI_FROMREFLECTEDMETHOD_ENTRY( |
513 HOTSPOT_JNI_FROMREFLECTEDMETHOD_ENTRY(env, method); |
515 env, method); |
|
516 #endif /* USDT2 */ |
514 #endif /* USDT2 */ |
517 jmethodID ret = NULL; |
515 jmethodID ret = NULL; |
518 DT_RETURN_MARK(FromReflectedMethod, jmethodID, (const jmethodID&)ret); |
516 DT_RETURN_MARK(FromReflectedMethod, jmethodID, (const jmethodID&)ret); |
519 |
517 |
520 // method is a handle to a java.lang.reflect.Method object |
518 // method is a handle to a java.lang.reflect.Method object |
550 JNI_ENTRY(jfieldID, jni_FromReflectedField(JNIEnv *env, jobject field)) |
548 JNI_ENTRY(jfieldID, jni_FromReflectedField(JNIEnv *env, jobject field)) |
551 JNIWrapper("FromReflectedField"); |
549 JNIWrapper("FromReflectedField"); |
552 #ifndef USDT2 |
550 #ifndef USDT2 |
553 DTRACE_PROBE2(hotspot_jni, FromReflectedField__entry, env, field); |
551 DTRACE_PROBE2(hotspot_jni, FromReflectedField__entry, env, field); |
554 #else /* USDT2 */ |
552 #else /* USDT2 */ |
555 HOTSPOT_JNI_FROMREFLECTEDFIELD_ENTRY( |
553 HOTSPOT_JNI_FROMREFLECTEDFIELD_ENTRY(env, field); |
556 env, field); |
|
557 #endif /* USDT2 */ |
554 #endif /* USDT2 */ |
558 jfieldID ret = NULL; |
555 jfieldID ret = NULL; |
559 DT_RETURN_MARK(FromReflectedField, jfieldID, (const jfieldID&)ret); |
556 DT_RETURN_MARK(FromReflectedField, jfieldID, (const jfieldID&)ret); |
560 |
557 |
561 // field is a handle to a java.lang.reflect.Field object |
558 // field is a handle to a java.lang.reflect.Field object |
599 JNI_ENTRY(jobject, jni_ToReflectedMethod(JNIEnv *env, jclass cls, jmethodID method_id, jboolean isStatic)) |
596 JNI_ENTRY(jobject, jni_ToReflectedMethod(JNIEnv *env, jclass cls, jmethodID method_id, jboolean isStatic)) |
600 JNIWrapper("ToReflectedMethod"); |
597 JNIWrapper("ToReflectedMethod"); |
601 #ifndef USDT2 |
598 #ifndef USDT2 |
602 DTRACE_PROBE4(hotspot_jni, ToReflectedMethod__entry, env, cls, method_id, isStatic); |
599 DTRACE_PROBE4(hotspot_jni, ToReflectedMethod__entry, env, cls, method_id, isStatic); |
603 #else /* USDT2 */ |
600 #else /* USDT2 */ |
604 HOTSPOT_JNI_TOREFLECTEDMETHOD_ENTRY( |
601 HOTSPOT_JNI_TOREFLECTEDMETHOD_ENTRY(env, cls, (uintptr_t) method_id, isStatic); |
605 env, cls, (uintptr_t) method_id, isStatic); |
|
606 #endif /* USDT2 */ |
602 #endif /* USDT2 */ |
607 jobject ret = NULL; |
603 jobject ret = NULL; |
608 DT_RETURN_MARK(ToReflectedMethod, jobject, (const jobject&)ret); |
604 DT_RETURN_MARK(ToReflectedMethod, jobject, (const jobject&)ret); |
609 |
605 |
610 methodHandle m (THREAD, Method::resolve_jmethod_id(method_id)); |
606 methodHandle m (THREAD, Method::resolve_jmethod_id(method_id)); |
629 JNI_ENTRY(jclass, jni_GetSuperclass(JNIEnv *env, jclass sub)) |
625 JNI_ENTRY(jclass, jni_GetSuperclass(JNIEnv *env, jclass sub)) |
630 JNIWrapper("GetSuperclass"); |
626 JNIWrapper("GetSuperclass"); |
631 #ifndef USDT2 |
627 #ifndef USDT2 |
632 DTRACE_PROBE2(hotspot_jni, GetSuperclass__entry, env, sub); |
628 DTRACE_PROBE2(hotspot_jni, GetSuperclass__entry, env, sub); |
633 #else /* USDT2 */ |
629 #else /* USDT2 */ |
634 HOTSPOT_JNI_GETSUPERCLASS_ENTRY( |
630 HOTSPOT_JNI_GETSUPERCLASS_ENTRY(env, sub); |
635 env, sub); |
|
636 #endif /* USDT2 */ |
631 #endif /* USDT2 */ |
637 jclass obj = NULL; |
632 jclass obj = NULL; |
638 DT_RETURN_MARK(GetSuperclass, jclass, (const jclass&)obj); |
633 DT_RETURN_MARK(GetSuperclass, jclass, (const jclass&)obj); |
639 |
634 |
640 oop mirror = JNIHandles::resolve_non_null(sub); |
635 oop mirror = JNIHandles::resolve_non_null(sub); |
663 JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass super)) |
658 JNI_QUICK_ENTRY(jboolean, jni_IsAssignableFrom(JNIEnv *env, jclass sub, jclass super)) |
664 JNIWrapper("IsSubclassOf"); |
659 JNIWrapper("IsSubclassOf"); |
665 #ifndef USDT2 |
660 #ifndef USDT2 |
666 DTRACE_PROBE3(hotspot_jni, IsAssignableFrom__entry, env, sub, super); |
661 DTRACE_PROBE3(hotspot_jni, IsAssignableFrom__entry, env, sub, super); |
667 #else /* USDT2 */ |
662 #else /* USDT2 */ |
668 HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY( |
663 HOTSPOT_JNI_ISASSIGNABLEFROM_ENTRY(env, sub, super); |
669 env, sub, super); |
|
670 #endif /* USDT2 */ |
664 #endif /* USDT2 */ |
671 oop sub_mirror = JNIHandles::resolve_non_null(sub); |
665 oop sub_mirror = JNIHandles::resolve_non_null(sub); |
672 oop super_mirror = JNIHandles::resolve_non_null(super); |
666 oop super_mirror = JNIHandles::resolve_non_null(super); |
673 if (java_lang_Class::is_primitive(sub_mirror) || |
667 if (java_lang_Class::is_primitive(sub_mirror) || |
674 java_lang_Class::is_primitive(super_mirror)) { |
668 java_lang_Class::is_primitive(super_mirror)) { |
675 jboolean ret = (sub_mirror == super_mirror); |
669 jboolean ret = (sub_mirror == super_mirror); |
676 #ifndef USDT2 |
670 #ifndef USDT2 |
677 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); |
671 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); |
678 #else /* USDT2 */ |
672 #else /* USDT2 */ |
679 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN( |
673 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret); |
680 ret); |
|
681 #endif /* USDT2 */ |
674 #endif /* USDT2 */ |
682 return ret; |
675 return ret; |
683 } |
676 } |
684 Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror); |
677 Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror); |
685 Klass* super_klass = java_lang_Class::as_Klass(super_mirror); |
678 Klass* super_klass = java_lang_Class::as_Klass(super_mirror); |
687 jboolean ret = sub_klass->is_subtype_of(super_klass) ? |
680 jboolean ret = sub_klass->is_subtype_of(super_klass) ? |
688 JNI_TRUE : JNI_FALSE; |
681 JNI_TRUE : JNI_FALSE; |
689 #ifndef USDT2 |
682 #ifndef USDT2 |
690 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); |
683 DTRACE_PROBE1(hotspot_jni, IsAssignableFrom__return, ret); |
691 #else /* USDT2 */ |
684 #else /* USDT2 */ |
692 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN( |
685 HOTSPOT_JNI_ISASSIGNABLEFROM_RETURN(ret); |
693 ret); |
|
694 #endif /* USDT2 */ |
686 #endif /* USDT2 */ |
695 return ret; |
687 return ret; |
696 JNI_END |
688 JNI_END |
697 |
689 |
698 #ifndef USDT2 |
690 #ifndef USDT2 |
705 JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj)) |
697 JNI_ENTRY(jint, jni_Throw(JNIEnv *env, jthrowable obj)) |
706 JNIWrapper("Throw"); |
698 JNIWrapper("Throw"); |
707 #ifndef USDT2 |
699 #ifndef USDT2 |
708 DTRACE_PROBE2(hotspot_jni, Throw__entry, env, obj); |
700 DTRACE_PROBE2(hotspot_jni, Throw__entry, env, obj); |
709 #else /* USDT2 */ |
701 #else /* USDT2 */ |
710 HOTSPOT_JNI_THROW_ENTRY( |
702 HOTSPOT_JNI_THROW_ENTRY(env, obj); |
711 env, obj); |
|
712 #endif /* USDT2 */ |
703 #endif /* USDT2 */ |
713 jint ret = JNI_OK; |
704 jint ret = JNI_OK; |
714 DT_RETURN_MARK(Throw, jint, (const jint&)ret); |
705 DT_RETURN_MARK(Throw, jint, (const jint&)ret); |
715 |
706 |
716 THROW_OOP_(JNIHandles::resolve(obj), JNI_OK); |
707 THROW_OOP_(JNIHandles::resolve(obj), JNI_OK); |
727 JNI_ENTRY(jint, jni_ThrowNew(JNIEnv *env, jclass clazz, const char *message)) |
718 JNI_ENTRY(jint, jni_ThrowNew(JNIEnv *env, jclass clazz, const char *message)) |
728 JNIWrapper("ThrowNew"); |
719 JNIWrapper("ThrowNew"); |
729 #ifndef USDT2 |
720 #ifndef USDT2 |
730 DTRACE_PROBE3(hotspot_jni, ThrowNew__entry, env, clazz, message); |
721 DTRACE_PROBE3(hotspot_jni, ThrowNew__entry, env, clazz, message); |
731 #else /* USDT2 */ |
722 #else /* USDT2 */ |
732 HOTSPOT_JNI_THROWNEW_ENTRY( |
723 HOTSPOT_JNI_THROWNEW_ENTRY(env, clazz, (char *) message); |
733 env, clazz, (char *) message); |
|
734 #endif /* USDT2 */ |
724 #endif /* USDT2 */ |
735 jint ret = JNI_OK; |
725 jint ret = JNI_OK; |
736 DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret); |
726 DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret); |
737 |
727 |
738 InstanceKlass* k = InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); |
728 InstanceKlass* k = InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); |
761 JNI_ENTRY_NO_PRESERVE(jthrowable, jni_ExceptionOccurred(JNIEnv *env)) |
751 JNI_ENTRY_NO_PRESERVE(jthrowable, jni_ExceptionOccurred(JNIEnv *env)) |
762 JNIWrapper("ExceptionOccurred"); |
752 JNIWrapper("ExceptionOccurred"); |
763 #ifndef USDT2 |
753 #ifndef USDT2 |
764 DTRACE_PROBE1(hotspot_jni, ExceptionOccurred__entry, env); |
754 DTRACE_PROBE1(hotspot_jni, ExceptionOccurred__entry, env); |
765 #else /* USDT2 */ |
755 #else /* USDT2 */ |
766 HOTSPOT_JNI_EXCEPTIONOCCURRED_ENTRY( |
756 HOTSPOT_JNI_EXCEPTIONOCCURRED_ENTRY(env); |
767 env); |
|
768 #endif /* USDT2 */ |
757 #endif /* USDT2 */ |
769 jni_check_async_exceptions(thread); |
758 jni_check_async_exceptions(thread); |
770 oop exception = thread->pending_exception(); |
759 oop exception = thread->pending_exception(); |
771 jthrowable ret = (jthrowable) JNIHandles::make_local(env, exception); |
760 jthrowable ret = (jthrowable) JNIHandles::make_local(env, exception); |
772 #ifndef USDT2 |
761 #ifndef USDT2 |
773 DTRACE_PROBE1(hotspot_jni, ExceptionOccurred__return, ret); |
762 DTRACE_PROBE1(hotspot_jni, ExceptionOccurred__return, ret); |
774 #else /* USDT2 */ |
763 #else /* USDT2 */ |
775 HOTSPOT_JNI_EXCEPTIONOCCURRED_RETURN( |
764 HOTSPOT_JNI_EXCEPTIONOCCURRED_RETURN(ret); |
776 ret); |
|
777 #endif /* USDT2 */ |
765 #endif /* USDT2 */ |
778 return ret; |
766 return ret; |
779 JNI_END |
767 JNI_END |
780 |
768 |
781 |
769 |
782 JNI_ENTRY_NO_PRESERVE(void, jni_ExceptionDescribe(JNIEnv *env)) |
770 JNI_ENTRY_NO_PRESERVE(void, jni_ExceptionDescribe(JNIEnv *env)) |
783 JNIWrapper("ExceptionDescribe"); |
771 JNIWrapper("ExceptionDescribe"); |
784 #ifndef USDT2 |
772 #ifndef USDT2 |
785 DTRACE_PROBE1(hotspot_jni, ExceptionDescribe__entry, env); |
773 DTRACE_PROBE1(hotspot_jni, ExceptionDescribe__entry, env); |
786 #else /* USDT2 */ |
774 #else /* USDT2 */ |
787 HOTSPOT_JNI_EXCEPTIONDESCRIBE_ENTRY( |
775 HOTSPOT_JNI_EXCEPTIONDESCRIBE_ENTRY(env); |
788 env); |
|
789 #endif /* USDT2 */ |
776 #endif /* USDT2 */ |
790 if (thread->has_pending_exception()) { |
777 if (thread->has_pending_exception()) { |
791 Handle ex(thread, thread->pending_exception()); |
778 Handle ex(thread, thread->pending_exception()); |
792 thread->clear_pending_exception(); |
779 thread->clear_pending_exception(); |
793 if (ex->is_a(SystemDictionary::ThreadDeath_klass())) { |
780 if (ex->is_a(SystemDictionary::ThreadDeath_klass())) { |
823 } |
810 } |
824 } |
811 } |
825 #ifndef USDT2 |
812 #ifndef USDT2 |
826 DTRACE_PROBE(hotspot_jni, ExceptionDescribe__return); |
813 DTRACE_PROBE(hotspot_jni, ExceptionDescribe__return); |
827 #else /* USDT2 */ |
814 #else /* USDT2 */ |
828 HOTSPOT_JNI_EXCEPTIONDESCRIBE_RETURN( |
815 HOTSPOT_JNI_EXCEPTIONDESCRIBE_RETURN(); |
829 ); |
|
830 #endif /* USDT2 */ |
816 #endif /* USDT2 */ |
831 JNI_END |
817 JNI_END |
832 |
818 |
833 |
819 |
834 JNI_QUICK_ENTRY(void, jni_ExceptionClear(JNIEnv *env)) |
820 JNI_QUICK_ENTRY(void, jni_ExceptionClear(JNIEnv *env)) |
835 JNIWrapper("ExceptionClear"); |
821 JNIWrapper("ExceptionClear"); |
836 #ifndef USDT2 |
822 #ifndef USDT2 |
837 DTRACE_PROBE1(hotspot_jni, ExceptionClear__entry, env); |
823 DTRACE_PROBE1(hotspot_jni, ExceptionClear__entry, env); |
838 #else /* USDT2 */ |
824 #else /* USDT2 */ |
839 HOTSPOT_JNI_EXCEPTIONCLEAR_ENTRY( |
825 HOTSPOT_JNI_EXCEPTIONCLEAR_ENTRY(env); |
840 env); |
|
841 #endif /* USDT2 */ |
826 #endif /* USDT2 */ |
842 |
827 |
843 // The jni code might be using this API to clear java thrown exception. |
828 // The jni code might be using this API to clear java thrown exception. |
844 // So just mark jvmti thread exception state as exception caught. |
829 // So just mark jvmti thread exception state as exception caught. |
845 JvmtiThreadState *state = JavaThread::current()->jvmti_thread_state(); |
830 JvmtiThreadState *state = JavaThread::current()->jvmti_thread_state(); |
848 } |
833 } |
849 thread->clear_pending_exception(); |
834 thread->clear_pending_exception(); |
850 #ifndef USDT2 |
835 #ifndef USDT2 |
851 DTRACE_PROBE(hotspot_jni, ExceptionClear__return); |
836 DTRACE_PROBE(hotspot_jni, ExceptionClear__return); |
852 #else /* USDT2 */ |
837 #else /* USDT2 */ |
853 HOTSPOT_JNI_EXCEPTIONCLEAR_RETURN( |
838 HOTSPOT_JNI_EXCEPTIONCLEAR_RETURN(); |
854 ); |
|
855 #endif /* USDT2 */ |
839 #endif /* USDT2 */ |
856 JNI_END |
840 JNI_END |
857 |
841 |
858 |
842 |
859 JNI_ENTRY(void, jni_FatalError(JNIEnv *env, const char *msg)) |
843 JNI_ENTRY(void, jni_FatalError(JNIEnv *env, const char *msg)) |
860 JNIWrapper("FatalError"); |
844 JNIWrapper("FatalError"); |
861 #ifndef USDT2 |
845 #ifndef USDT2 |
862 DTRACE_PROBE2(hotspot_jni, FatalError__entry, env, msg); |
846 DTRACE_PROBE2(hotspot_jni, FatalError__entry, env, msg); |
863 #else /* USDT2 */ |
847 #else /* USDT2 */ |
864 HOTSPOT_JNI_FATALERROR_ENTRY( |
848 HOTSPOT_JNI_FATALERROR_ENTRY(env, (char *) msg); |
865 env, (char *) msg); |
|
866 #endif /* USDT2 */ |
849 #endif /* USDT2 */ |
867 tty->print_cr("FATAL ERROR in native method: %s", msg); |
850 tty->print_cr("FATAL ERROR in native method: %s", msg); |
868 thread->print_stack(); |
851 thread->print_stack(); |
869 os::abort(); // Dump core and abort |
852 os::abort(); // Dump core and abort |
870 JNI_END |
853 JNI_END |
873 JNI_ENTRY(jint, jni_PushLocalFrame(JNIEnv *env, jint capacity)) |
856 JNI_ENTRY(jint, jni_PushLocalFrame(JNIEnv *env, jint capacity)) |
874 JNIWrapper("PushLocalFrame"); |
857 JNIWrapper("PushLocalFrame"); |
875 #ifndef USDT2 |
858 #ifndef USDT2 |
876 DTRACE_PROBE2(hotspot_jni, PushLocalFrame__entry, env, capacity); |
859 DTRACE_PROBE2(hotspot_jni, PushLocalFrame__entry, env, capacity); |
877 #else /* USDT2 */ |
860 #else /* USDT2 */ |
878 HOTSPOT_JNI_PUSHLOCALFRAME_ENTRY( |
861 HOTSPOT_JNI_PUSHLOCALFRAME_ENTRY(env, capacity); |
879 env, capacity); |
|
880 #endif /* USDT2 */ |
862 #endif /* USDT2 */ |
881 //%note jni_11 |
863 //%note jni_11 |
882 if (capacity < 0 || capacity > MAX_REASONABLE_LOCAL_CAPACITY) { |
864 if (capacity < 0 || capacity > MAX_REASONABLE_LOCAL_CAPACITY) { |
883 #ifndef USDT2 |
865 #ifndef USDT2 |
884 DTRACE_PROBE1(hotspot_jni, PushLocalFrame__return, JNI_ERR); |
866 DTRACE_PROBE1(hotspot_jni, PushLocalFrame__return, JNI_ERR); |
885 #else /* USDT2 */ |
867 #else /* USDT2 */ |
886 HOTSPOT_JNI_PUSHLOCALFRAME_RETURN( |
868 HOTSPOT_JNI_PUSHLOCALFRAME_RETURN((uint32_t)JNI_ERR); |
887 (uint32_t)JNI_ERR); |
|
888 #endif /* USDT2 */ |
869 #endif /* USDT2 */ |
889 return JNI_ERR; |
870 return JNI_ERR; |
890 } |
871 } |
891 JNIHandleBlock* old_handles = thread->active_handles(); |
872 JNIHandleBlock* old_handles = thread->active_handles(); |
892 JNIHandleBlock* new_handles = JNIHandleBlock::allocate_block(thread); |
873 JNIHandleBlock* new_handles = JNIHandleBlock::allocate_block(thread); |
895 thread->set_active_handles(new_handles); |
876 thread->set_active_handles(new_handles); |
896 jint ret = JNI_OK; |
877 jint ret = JNI_OK; |
897 #ifndef USDT2 |
878 #ifndef USDT2 |
898 DTRACE_PROBE1(hotspot_jni, PushLocalFrame__return, ret); |
879 DTRACE_PROBE1(hotspot_jni, PushLocalFrame__return, ret); |
899 #else /* USDT2 */ |
880 #else /* USDT2 */ |
900 HOTSPOT_JNI_PUSHLOCALFRAME_RETURN( |
881 HOTSPOT_JNI_PUSHLOCALFRAME_RETURN(ret); |
901 ret); |
|
902 #endif /* USDT2 */ |
882 #endif /* USDT2 */ |
903 return ret; |
883 return ret; |
904 JNI_END |
884 JNI_END |
905 |
885 |
906 |
886 |
907 JNI_ENTRY(jobject, jni_PopLocalFrame(JNIEnv *env, jobject result)) |
887 JNI_ENTRY(jobject, jni_PopLocalFrame(JNIEnv *env, jobject result)) |
908 JNIWrapper("PopLocalFrame"); |
888 JNIWrapper("PopLocalFrame"); |
909 #ifndef USDT2 |
889 #ifndef USDT2 |
910 DTRACE_PROBE2(hotspot_jni, PopLocalFrame__entry, env, result); |
890 DTRACE_PROBE2(hotspot_jni, PopLocalFrame__entry, env, result); |
911 #else /* USDT2 */ |
891 #else /* USDT2 */ |
912 HOTSPOT_JNI_POPLOCALFRAME_ENTRY( |
892 HOTSPOT_JNI_POPLOCALFRAME_ENTRY(env, result); |
913 env, result); |
|
914 #endif /* USDT2 */ |
893 #endif /* USDT2 */ |
915 //%note jni_11 |
894 //%note jni_11 |
916 Handle result_handle(thread, JNIHandles::resolve(result)); |
895 Handle result_handle(thread, JNIHandles::resolve(result)); |
917 JNIHandleBlock* old_handles = thread->active_handles(); |
896 JNIHandleBlock* old_handles = thread->active_handles(); |
918 JNIHandleBlock* new_handles = old_handles->pop_frame_link(); |
897 JNIHandleBlock* new_handles = old_handles->pop_frame_link(); |
927 result = JNIHandles::make_local(thread, result_handle()); |
906 result = JNIHandles::make_local(thread, result_handle()); |
928 } |
907 } |
929 #ifndef USDT2 |
908 #ifndef USDT2 |
930 DTRACE_PROBE1(hotspot_jni, PopLocalFrame__return, result); |
909 DTRACE_PROBE1(hotspot_jni, PopLocalFrame__return, result); |
931 #else /* USDT2 */ |
910 #else /* USDT2 */ |
932 HOTSPOT_JNI_POPLOCALFRAME_RETURN( |
911 HOTSPOT_JNI_POPLOCALFRAME_RETURN(result); |
933 result); |
|
934 #endif /* USDT2 */ |
912 #endif /* USDT2 */ |
935 return result; |
913 return result; |
936 JNI_END |
914 JNI_END |
937 |
915 |
938 |
916 |
939 JNI_ENTRY(jobject, jni_NewGlobalRef(JNIEnv *env, jobject ref)) |
917 JNI_ENTRY(jobject, jni_NewGlobalRef(JNIEnv *env, jobject ref)) |
940 JNIWrapper("NewGlobalRef"); |
918 JNIWrapper("NewGlobalRef"); |
941 #ifndef USDT2 |
919 #ifndef USDT2 |
942 DTRACE_PROBE2(hotspot_jni, NewGlobalRef__entry, env, ref); |
920 DTRACE_PROBE2(hotspot_jni, NewGlobalRef__entry, env, ref); |
943 #else /* USDT2 */ |
921 #else /* USDT2 */ |
944 HOTSPOT_JNI_NEWGLOBALREF_ENTRY( |
922 HOTSPOT_JNI_NEWGLOBALREF_ENTRY(env, ref); |
945 env, ref); |
|
946 #endif /* USDT2 */ |
923 #endif /* USDT2 */ |
947 Handle ref_handle(thread, JNIHandles::resolve(ref)); |
924 Handle ref_handle(thread, JNIHandles::resolve(ref)); |
948 jobject ret = JNIHandles::make_global(ref_handle); |
925 jobject ret = JNIHandles::make_global(ref_handle); |
949 #ifndef USDT2 |
926 #ifndef USDT2 |
950 DTRACE_PROBE1(hotspot_jni, NewGlobalRef__return, ret); |
927 DTRACE_PROBE1(hotspot_jni, NewGlobalRef__return, ret); |
951 #else /* USDT2 */ |
928 #else /* USDT2 */ |
952 HOTSPOT_JNI_NEWGLOBALREF_RETURN( |
929 HOTSPOT_JNI_NEWGLOBALREF_RETURN(ret); |
953 ret); |
|
954 #endif /* USDT2 */ |
930 #endif /* USDT2 */ |
955 return ret; |
931 return ret; |
956 JNI_END |
932 JNI_END |
957 |
933 |
958 // Must be JNI_ENTRY (with HandleMark) |
934 // Must be JNI_ENTRY (with HandleMark) |
959 JNI_ENTRY_NO_PRESERVE(void, jni_DeleteGlobalRef(JNIEnv *env, jobject ref)) |
935 JNI_ENTRY_NO_PRESERVE(void, jni_DeleteGlobalRef(JNIEnv *env, jobject ref)) |
960 JNIWrapper("DeleteGlobalRef"); |
936 JNIWrapper("DeleteGlobalRef"); |
961 #ifndef USDT2 |
937 #ifndef USDT2 |
962 DTRACE_PROBE2(hotspot_jni, DeleteGlobalRef__entry, env, ref); |
938 DTRACE_PROBE2(hotspot_jni, DeleteGlobalRef__entry, env, ref); |
963 #else /* USDT2 */ |
939 #else /* USDT2 */ |
964 HOTSPOT_JNI_DELETEGLOBALREF_ENTRY( |
940 HOTSPOT_JNI_DELETEGLOBALREF_ENTRY(env, ref); |
965 env, ref); |
|
966 #endif /* USDT2 */ |
941 #endif /* USDT2 */ |
967 JNIHandles::destroy_global(ref); |
942 JNIHandles::destroy_global(ref); |
968 #ifndef USDT2 |
943 #ifndef USDT2 |
969 DTRACE_PROBE(hotspot_jni, DeleteGlobalRef__return); |
944 DTRACE_PROBE(hotspot_jni, DeleteGlobalRef__return); |
970 #else /* USDT2 */ |
945 #else /* USDT2 */ |
971 HOTSPOT_JNI_DELETEGLOBALREF_RETURN( |
946 HOTSPOT_JNI_DELETEGLOBALREF_RETURN(); |
972 ); |
|
973 #endif /* USDT2 */ |
947 #endif /* USDT2 */ |
974 JNI_END |
948 JNI_END |
975 |
949 |
976 JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj)) |
950 JNI_QUICK_ENTRY(void, jni_DeleteLocalRef(JNIEnv *env, jobject obj)) |
977 JNIWrapper("DeleteLocalRef"); |
951 JNIWrapper("DeleteLocalRef"); |
978 #ifndef USDT2 |
952 #ifndef USDT2 |
979 DTRACE_PROBE2(hotspot_jni, DeleteLocalRef__entry, env, obj); |
953 DTRACE_PROBE2(hotspot_jni, DeleteLocalRef__entry, env, obj); |
980 #else /* USDT2 */ |
954 #else /* USDT2 */ |
981 HOTSPOT_JNI_DELETELOCALREF_ENTRY( |
955 HOTSPOT_JNI_DELETELOCALREF_ENTRY(env, obj); |
982 env, obj); |
|
983 #endif /* USDT2 */ |
956 #endif /* USDT2 */ |
984 JNIHandles::destroy_local(obj); |
957 JNIHandles::destroy_local(obj); |
985 #ifndef USDT2 |
958 #ifndef USDT2 |
986 DTRACE_PROBE(hotspot_jni, DeleteLocalRef__return); |
959 DTRACE_PROBE(hotspot_jni, DeleteLocalRef__return); |
987 #else /* USDT2 */ |
960 #else /* USDT2 */ |
988 HOTSPOT_JNI_DELETELOCALREF_RETURN( |
961 HOTSPOT_JNI_DELETELOCALREF_RETURN(); |
989 ); |
|
990 #endif /* USDT2 */ |
962 #endif /* USDT2 */ |
991 JNI_END |
963 JNI_END |
992 |
964 |
993 JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2)) |
965 JNI_QUICK_ENTRY(jboolean, jni_IsSameObject(JNIEnv *env, jobject r1, jobject r2)) |
994 JNIWrapper("IsSameObject"); |
966 JNIWrapper("IsSameObject"); |
995 #ifndef USDT2 |
967 #ifndef USDT2 |
996 DTRACE_PROBE3(hotspot_jni, IsSameObject__entry, env, r1, r2); |
968 DTRACE_PROBE3(hotspot_jni, IsSameObject__entry, env, r1, r2); |
997 #else /* USDT2 */ |
969 #else /* USDT2 */ |
998 HOTSPOT_JNI_ISSAMEOBJECT_ENTRY( |
970 HOTSPOT_JNI_ISSAMEOBJECT_ENTRY(env, r1, r2); |
999 env, r1, r2); |
|
1000 #endif /* USDT2 */ |
971 #endif /* USDT2 */ |
1001 oop a = JNIHandles::resolve(r1); |
972 oop a = JNIHandles::resolve(r1); |
1002 oop b = JNIHandles::resolve(r2); |
973 oop b = JNIHandles::resolve(r2); |
1003 jboolean ret = (a == b) ? JNI_TRUE : JNI_FALSE; |
974 jboolean ret = (a == b) ? JNI_TRUE : JNI_FALSE; |
1004 #ifndef USDT2 |
975 #ifndef USDT2 |
1005 DTRACE_PROBE1(hotspot_jni, IsSameObject__return, ret); |
976 DTRACE_PROBE1(hotspot_jni, IsSameObject__return, ret); |
1006 #else /* USDT2 */ |
977 #else /* USDT2 */ |
1007 HOTSPOT_JNI_ISSAMEOBJECT_RETURN( |
978 HOTSPOT_JNI_ISSAMEOBJECT_RETURN(ret); |
1008 ret); |
|
1009 #endif /* USDT2 */ |
979 #endif /* USDT2 */ |
1010 return ret; |
980 return ret; |
1011 JNI_END |
981 JNI_END |
1012 |
982 |
1013 |
983 |
1014 JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref)) |
984 JNI_ENTRY(jobject, jni_NewLocalRef(JNIEnv *env, jobject ref)) |
1015 JNIWrapper("NewLocalRef"); |
985 JNIWrapper("NewLocalRef"); |
1016 #ifndef USDT2 |
986 #ifndef USDT2 |
1017 DTRACE_PROBE2(hotspot_jni, NewLocalRef__entry, env, ref); |
987 DTRACE_PROBE2(hotspot_jni, NewLocalRef__entry, env, ref); |
1018 #else /* USDT2 */ |
988 #else /* USDT2 */ |
1019 HOTSPOT_JNI_NEWLOCALREF_ENTRY( |
989 HOTSPOT_JNI_NEWLOCALREF_ENTRY(env, ref); |
1020 env, ref); |
|
1021 #endif /* USDT2 */ |
990 #endif /* USDT2 */ |
1022 jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref)); |
991 jobject ret = JNIHandles::make_local(env, JNIHandles::resolve(ref)); |
1023 #ifndef USDT2 |
992 #ifndef USDT2 |
1024 DTRACE_PROBE1(hotspot_jni, NewLocalRef__return, ret); |
993 DTRACE_PROBE1(hotspot_jni, NewLocalRef__return, ret); |
1025 #else /* USDT2 */ |
994 #else /* USDT2 */ |
1026 HOTSPOT_JNI_NEWLOCALREF_RETURN( |
995 HOTSPOT_JNI_NEWLOCALREF_RETURN(ret); |
1027 ret); |
|
1028 #endif /* USDT2 */ |
996 #endif /* USDT2 */ |
1029 return ret; |
997 return ret; |
1030 JNI_END |
998 JNI_END |
1031 |
999 |
1032 JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity)) |
1000 JNI_LEAF(jint, jni_EnsureLocalCapacity(JNIEnv *env, jint capacity)) |
1033 JNIWrapper("EnsureLocalCapacity"); |
1001 JNIWrapper("EnsureLocalCapacity"); |
1034 #ifndef USDT2 |
1002 #ifndef USDT2 |
1035 DTRACE_PROBE2(hotspot_jni, EnsureLocalCapacity__entry, env, capacity); |
1003 DTRACE_PROBE2(hotspot_jni, EnsureLocalCapacity__entry, env, capacity); |
1036 #else /* USDT2 */ |
1004 #else /* USDT2 */ |
1037 HOTSPOT_JNI_ENSURELOCALCAPACITY_ENTRY( |
1005 HOTSPOT_JNI_ENSURELOCALCAPACITY_ENTRY(env, capacity); |
1038 env, capacity); |
|
1039 #endif /* USDT2 */ |
1006 #endif /* USDT2 */ |
1040 jint ret; |
1007 jint ret; |
1041 if (capacity >= 0 && capacity <= MAX_REASONABLE_LOCAL_CAPACITY) { |
1008 if (capacity >= 0 && capacity <= MAX_REASONABLE_LOCAL_CAPACITY) { |
1042 ret = JNI_OK; |
1009 ret = JNI_OK; |
1043 } else { |
1010 } else { |
1044 ret = JNI_ERR; |
1011 ret = JNI_ERR; |
1045 } |
1012 } |
1046 #ifndef USDT2 |
1013 #ifndef USDT2 |
1047 DTRACE_PROBE1(hotspot_jni, EnsureLocalCapacity__return, ret); |
1014 DTRACE_PROBE1(hotspot_jni, EnsureLocalCapacity__return, ret); |
1048 #else /* USDT2 */ |
1015 #else /* USDT2 */ |
1049 HOTSPOT_JNI_ENSURELOCALCAPACITY_RETURN( |
1016 HOTSPOT_JNI_ENSURELOCALCAPACITY_RETURN(ret); |
1050 ret); |
|
1051 #endif /* USDT2 */ |
1017 #endif /* USDT2 */ |
1052 return ret; |
1018 return ret; |
1053 JNI_END |
1019 JNI_END |
1054 |
1020 |
1055 // Return the Handle Type |
1021 // Return the Handle Type |
1056 JNI_LEAF(jobjectRefType, jni_GetObjectRefType(JNIEnv *env, jobject obj)) |
1022 JNI_LEAF(jobjectRefType, jni_GetObjectRefType(JNIEnv *env, jobject obj)) |
1057 JNIWrapper("GetObjectRefType"); |
1023 JNIWrapper("GetObjectRefType"); |
1058 #ifndef USDT2 |
1024 #ifndef USDT2 |
1059 DTRACE_PROBE2(hotspot_jni, GetObjectRefType__entry, env, obj); |
1025 DTRACE_PROBE2(hotspot_jni, GetObjectRefType__entry, env, obj); |
1060 #else /* USDT2 */ |
1026 #else /* USDT2 */ |
1061 HOTSPOT_JNI_GETOBJECTREFTYPE_ENTRY( |
1027 HOTSPOT_JNI_GETOBJECTREFTYPE_ENTRY(env, obj); |
1062 env, obj); |
|
1063 #endif /* USDT2 */ |
1028 #endif /* USDT2 */ |
1064 jobjectRefType ret; |
1029 jobjectRefType ret; |
1065 if (JNIHandles::is_local_handle(thread, obj) || |
1030 if (JNIHandles::is_local_handle(thread, obj) || |
1066 JNIHandles::is_frame_handle(thread, obj)) |
1031 JNIHandles::is_frame_handle(thread, obj)) |
1067 ret = JNILocalRefType; |
1032 ret = JNILocalRefType; |
1072 else |
1037 else |
1073 ret = JNIInvalidRefType; |
1038 ret = JNIInvalidRefType; |
1074 #ifndef USDT2 |
1039 #ifndef USDT2 |
1075 DTRACE_PROBE1(hotspot_jni, GetObjectRefType__return, ret); |
1040 DTRACE_PROBE1(hotspot_jni, GetObjectRefType__return, ret); |
1076 #else /* USDT2 */ |
1041 #else /* USDT2 */ |
1077 HOTSPOT_JNI_GETOBJECTREFTYPE_RETURN( |
1042 HOTSPOT_JNI_GETOBJECTREFTYPE_RETURN((void *) ret); |
1078 (void *) ret); |
|
1079 #endif /* USDT2 */ |
1043 #endif /* USDT2 */ |
1080 return ret; |
1044 return ret; |
1081 JNI_END |
1045 JNI_END |
1082 |
1046 |
1083 |
1047 |
1408 JNIWrapper("AllocObject"); |
1372 JNIWrapper("AllocObject"); |
1409 |
1373 |
1410 #ifndef USDT2 |
1374 #ifndef USDT2 |
1411 DTRACE_PROBE2(hotspot_jni, AllocObject__entry, env, clazz); |
1375 DTRACE_PROBE2(hotspot_jni, AllocObject__entry, env, clazz); |
1412 #else /* USDT2 */ |
1376 #else /* USDT2 */ |
1413 HOTSPOT_JNI_ALLOCOBJECT_ENTRY( |
1377 HOTSPOT_JNI_ALLOCOBJECT_ENTRY(env, clazz); |
1414 env, clazz); |
|
1415 #endif /* USDT2 */ |
1378 #endif /* USDT2 */ |
1416 jobject ret = NULL; |
1379 jobject ret = NULL; |
1417 DT_RETURN_MARK(AllocObject, jobject, (const jobject&)ret); |
1380 DT_RETURN_MARK(AllocObject, jobject, (const jobject&)ret); |
1418 |
1381 |
1419 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1382 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1431 JNI_ENTRY(jobject, jni_NewObjectA(JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args)) |
1394 JNI_ENTRY(jobject, jni_NewObjectA(JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args)) |
1432 JNIWrapper("NewObjectA"); |
1395 JNIWrapper("NewObjectA"); |
1433 #ifndef USDT2 |
1396 #ifndef USDT2 |
1434 DTRACE_PROBE3(hotspot_jni, NewObjectA__entry, env, clazz, methodID); |
1397 DTRACE_PROBE3(hotspot_jni, NewObjectA__entry, env, clazz, methodID); |
1435 #else /* USDT2 */ |
1398 #else /* USDT2 */ |
1436 HOTSPOT_JNI_NEWOBJECTA_ENTRY( |
1399 HOTSPOT_JNI_NEWOBJECTA_ENTRY(env, clazz, (uintptr_t) methodID); |
1437 env, clazz, (uintptr_t) methodID); |
|
1438 #endif /* USDT2 */ |
1400 #endif /* USDT2 */ |
1439 jobject obj = NULL; |
1401 jobject obj = NULL; |
1440 DT_RETURN_MARK(NewObjectA, jobject, (const jobject)obj); |
1402 DT_RETURN_MARK(NewObjectA, jobject, (const jobject)obj); |
1441 |
1403 |
1442 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1404 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1457 JNI_ENTRY(jobject, jni_NewObjectV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)) |
1419 JNI_ENTRY(jobject, jni_NewObjectV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args)) |
1458 JNIWrapper("NewObjectV"); |
1420 JNIWrapper("NewObjectV"); |
1459 #ifndef USDT2 |
1421 #ifndef USDT2 |
1460 DTRACE_PROBE3(hotspot_jni, NewObjectV__entry, env, clazz, methodID); |
1422 DTRACE_PROBE3(hotspot_jni, NewObjectV__entry, env, clazz, methodID); |
1461 #else /* USDT2 */ |
1423 #else /* USDT2 */ |
1462 HOTSPOT_JNI_NEWOBJECTV_ENTRY( |
1424 HOTSPOT_JNI_NEWOBJECTV_ENTRY(env, clazz, (uintptr_t) methodID); |
1463 env, clazz, (uintptr_t) methodID); |
|
1464 #endif /* USDT2 */ |
1425 #endif /* USDT2 */ |
1465 jobject obj = NULL; |
1426 jobject obj = NULL; |
1466 DT_RETURN_MARK(NewObjectV, jobject, (const jobject&)obj); |
1427 DT_RETURN_MARK(NewObjectV, jobject, (const jobject&)obj); |
1467 |
1428 |
1468 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1429 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1483 JNI_ENTRY(jobject, jni_NewObject(JNIEnv *env, jclass clazz, jmethodID methodID, ...)) |
1444 JNI_ENTRY(jobject, jni_NewObject(JNIEnv *env, jclass clazz, jmethodID methodID, ...)) |
1484 JNIWrapper("NewObject"); |
1445 JNIWrapper("NewObject"); |
1485 #ifndef USDT2 |
1446 #ifndef USDT2 |
1486 DTRACE_PROBE3(hotspot_jni, NewObject__entry, env, clazz, methodID); |
1447 DTRACE_PROBE3(hotspot_jni, NewObject__entry, env, clazz, methodID); |
1487 #else /* USDT2 */ |
1448 #else /* USDT2 */ |
1488 HOTSPOT_JNI_NEWOBJECT_ENTRY( |
1449 HOTSPOT_JNI_NEWOBJECT_ENTRY(env, clazz, (uintptr_t) methodID); |
1489 env, clazz, (uintptr_t) methodID); |
|
1490 #endif /* USDT2 */ |
1450 #endif /* USDT2 */ |
1491 jobject obj = NULL; |
1451 jobject obj = NULL; |
1492 DT_RETURN_MARK(NewObject, jobject, (const jobject&)obj); |
1452 DT_RETURN_MARK(NewObject, jobject, (const jobject&)obj); |
1493 |
1453 |
1494 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1454 instanceOop i = alloc_object(clazz, CHECK_NULL); |
1506 JNI_ENTRY(jclass, jni_GetObjectClass(JNIEnv *env, jobject obj)) |
1466 JNI_ENTRY(jclass, jni_GetObjectClass(JNIEnv *env, jobject obj)) |
1507 JNIWrapper("GetObjectClass"); |
1467 JNIWrapper("GetObjectClass"); |
1508 #ifndef USDT2 |
1468 #ifndef USDT2 |
1509 DTRACE_PROBE2(hotspot_jni, GetObjectClass__entry, env, obj); |
1469 DTRACE_PROBE2(hotspot_jni, GetObjectClass__entry, env, obj); |
1510 #else /* USDT2 */ |
1470 #else /* USDT2 */ |
1511 HOTSPOT_JNI_GETOBJECTCLASS_ENTRY( |
1471 HOTSPOT_JNI_GETOBJECTCLASS_ENTRY(env, obj); |
1512 env, obj); |
|
1513 #endif /* USDT2 */ |
1472 #endif /* USDT2 */ |
1514 Klass* k = JNIHandles::resolve_non_null(obj)->klass(); |
1473 Klass* k = JNIHandles::resolve_non_null(obj)->klass(); |
1515 jclass ret = |
1474 jclass ret = |
1516 (jclass) JNIHandles::make_local(env, k->java_mirror()); |
1475 (jclass) JNIHandles::make_local(env, k->java_mirror()); |
1517 #ifndef USDT2 |
1476 #ifndef USDT2 |
1518 DTRACE_PROBE1(hotspot_jni, GetObjectClass__return, ret); |
1477 DTRACE_PROBE1(hotspot_jni, GetObjectClass__return, ret); |
1519 #else /* USDT2 */ |
1478 #else /* USDT2 */ |
1520 HOTSPOT_JNI_GETOBJECTCLASS_RETURN( |
1479 HOTSPOT_JNI_GETOBJECTCLASS_RETURN(ret); |
1521 ret); |
|
1522 #endif /* USDT2 */ |
1480 #endif /* USDT2 */ |
1523 return ret; |
1481 return ret; |
1524 JNI_END |
1482 JNI_END |
1525 |
1483 |
1526 JNI_QUICK_ENTRY(jboolean, jni_IsInstanceOf(JNIEnv *env, jobject obj, jclass clazz)) |
1484 JNI_QUICK_ENTRY(jboolean, jni_IsInstanceOf(JNIEnv *env, jobject obj, jclass clazz)) |
1527 JNIWrapper("IsInstanceOf"); |
1485 JNIWrapper("IsInstanceOf"); |
1528 #ifndef USDT2 |
1486 #ifndef USDT2 |
1529 DTRACE_PROBE3(hotspot_jni, IsInstanceOf__entry, env, obj, clazz); |
1487 DTRACE_PROBE3(hotspot_jni, IsInstanceOf__entry, env, obj, clazz); |
1530 #else /* USDT2 */ |
1488 #else /* USDT2 */ |
1531 HOTSPOT_JNI_ISINSTANCEOF_ENTRY( |
1489 HOTSPOT_JNI_ISINSTANCEOF_ENTRY(env, obj, clazz); |
1532 env, obj, clazz); |
|
1533 #endif /* USDT2 */ |
1490 #endif /* USDT2 */ |
1534 jboolean ret = JNI_TRUE; |
1491 jboolean ret = JNI_TRUE; |
1535 if (obj != NULL) { |
1492 if (obj != NULL) { |
1536 ret = JNI_FALSE; |
1493 ret = JNI_FALSE; |
1537 Klass* k = java_lang_Class::as_Klass( |
1494 Klass* k = java_lang_Class::as_Klass( |
1541 } |
1498 } |
1542 } |
1499 } |
1543 #ifndef USDT2 |
1500 #ifndef USDT2 |
1544 DTRACE_PROBE1(hotspot_jni, IsInstanceOf__return, ret); |
1501 DTRACE_PROBE1(hotspot_jni, IsInstanceOf__return, ret); |
1545 #else /* USDT2 */ |
1502 #else /* USDT2 */ |
1546 HOTSPOT_JNI_ISINSTANCEOF_RETURN( |
1503 HOTSPOT_JNI_ISINSTANCEOF_RETURN(ret); |
1547 ret); |
|
1548 #endif /* USDT2 */ |
1504 #endif /* USDT2 */ |
1549 return ret; |
1505 return ret; |
1550 JNI_END |
1506 JNI_END |
1551 |
1507 |
1552 |
1508 |
1606 const char *name, const char *sig)) |
1562 const char *name, const char *sig)) |
1607 JNIWrapper("GetMethodID"); |
1563 JNIWrapper("GetMethodID"); |
1608 #ifndef USDT2 |
1564 #ifndef USDT2 |
1609 DTRACE_PROBE4(hotspot_jni, GetMethodID__entry, env, clazz, name, sig); |
1565 DTRACE_PROBE4(hotspot_jni, GetMethodID__entry, env, clazz, name, sig); |
1610 #else /* USDT2 */ |
1566 #else /* USDT2 */ |
1611 HOTSPOT_JNI_GETMETHODID_ENTRY( |
1567 HOTSPOT_JNI_GETMETHODID_ENTRY(env, clazz, (char *) name, (char *) sig); |
1612 env, clazz, (char *) name, (char *) sig); |
|
1613 #endif /* USDT2 */ |
1568 #endif /* USDT2 */ |
1614 jmethodID ret = get_method_id(env, clazz, name, sig, false, thread); |
1569 jmethodID ret = get_method_id(env, clazz, name, sig, false, thread); |
1615 #ifndef USDT2 |
1570 #ifndef USDT2 |
1616 DTRACE_PROBE1(hotspot_jni, GetMethodID__return, ret); |
1571 DTRACE_PROBE1(hotspot_jni, GetMethodID__return, ret); |
1617 #else /* USDT2 */ |
1572 #else /* USDT2 */ |
1618 HOTSPOT_JNI_GETMETHODID_RETURN( |
1573 HOTSPOT_JNI_GETMETHODID_RETURN((uintptr_t) ret); |
1619 (uintptr_t) ret); |
|
1620 #endif /* USDT2 */ |
1574 #endif /* USDT2 */ |
1621 return ret; |
1575 return ret; |
1622 JNI_END |
1576 JNI_END |
1623 |
1577 |
1624 |
1578 |
1626 const char *name, const char *sig)) |
1580 const char *name, const char *sig)) |
1627 JNIWrapper("GetStaticMethodID"); |
1581 JNIWrapper("GetStaticMethodID"); |
1628 #ifndef USDT2 |
1582 #ifndef USDT2 |
1629 DTRACE_PROBE4(hotspot_jni, GetStaticMethodID__entry, env, clazz, name, sig); |
1583 DTRACE_PROBE4(hotspot_jni, GetStaticMethodID__entry, env, clazz, name, sig); |
1630 #else /* USDT2 */ |
1584 #else /* USDT2 */ |
1631 HOTSPOT_JNI_GETSTATICMETHODID_ENTRY( |
1585 HOTSPOT_JNI_GETSTATICMETHODID_ENTRY(env, (char *) clazz, (char *) name, (char *)sig); |
1632 env, (char *) clazz, (char *) name, (char *)sig); |
|
1633 #endif /* USDT2 */ |
1586 #endif /* USDT2 */ |
1634 jmethodID ret = get_method_id(env, clazz, name, sig, true, thread); |
1587 jmethodID ret = get_method_id(env, clazz, name, sig, true, thread); |
1635 #ifndef USDT2 |
1588 #ifndef USDT2 |
1636 DTRACE_PROBE1(hotspot_jni, GetStaticMethodID__return, ret); |
1589 DTRACE_PROBE1(hotspot_jni, GetStaticMethodID__return, ret); |
1637 #else /* USDT2 */ |
1590 #else /* USDT2 */ |
1638 HOTSPOT_JNI_GETSTATICMETHODID_RETURN( |
1591 HOTSPOT_JNI_GETSTATICMETHODID_RETURN((uintptr_t) ret); |
1639 (uintptr_t) ret); |
|
1640 #endif /* USDT2 */ |
1592 #endif /* USDT2 */ |
1641 return ret; |
1593 return ret; |
1642 JNI_END |
1594 JNI_END |
1643 |
1595 |
1644 |
1596 |
1894 JNI_ENTRY(void, jni_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID methodID, ...)) |
1846 JNI_ENTRY(void, jni_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID methodID, ...)) |
1895 JNIWrapper("CallVoidMethod"); |
1847 JNIWrapper("CallVoidMethod"); |
1896 #ifndef USDT2 |
1848 #ifndef USDT2 |
1897 DTRACE_PROBE3(hotspot_jni, CallVoidMethod__entry, env, obj, methodID); |
1849 DTRACE_PROBE3(hotspot_jni, CallVoidMethod__entry, env, obj, methodID); |
1898 #else /* USDT2 */ |
1850 #else /* USDT2 */ |
1899 HOTSPOT_JNI_CALLVOIDMETHOD_ENTRY( |
1851 HOTSPOT_JNI_CALLVOIDMETHOD_ENTRY(env, obj, (uintptr_t) methodID); |
1900 env, obj, (uintptr_t) methodID); |
|
1901 #endif /* USDT2 */ |
1852 #endif /* USDT2 */ |
1902 DT_VOID_RETURN_MARK(CallVoidMethod); |
1853 DT_VOID_RETURN_MARK(CallVoidMethod); |
1903 |
1854 |
1904 va_list args; |
1855 va_list args; |
1905 va_start(args, methodID); |
1856 va_start(args, methodID); |
1913 JNI_ENTRY(void, jni_CallVoidMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)) |
1864 JNI_ENTRY(void, jni_CallVoidMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list args)) |
1914 JNIWrapper("CallVoidMethodV"); |
1865 JNIWrapper("CallVoidMethodV"); |
1915 #ifndef USDT2 |
1866 #ifndef USDT2 |
1916 DTRACE_PROBE3(hotspot_jni, CallVoidMethodV__entry, env, obj, methodID); |
1867 DTRACE_PROBE3(hotspot_jni, CallVoidMethodV__entry, env, obj, methodID); |
1917 #else /* USDT2 */ |
1868 #else /* USDT2 */ |
1918 HOTSPOT_JNI_CALLVOIDMETHODV_ENTRY( |
1869 HOTSPOT_JNI_CALLVOIDMETHODV_ENTRY(env, obj, (uintptr_t) methodID); |
1919 env, obj, (uintptr_t) methodID); |
|
1920 #endif /* USDT2 */ |
1870 #endif /* USDT2 */ |
1921 DT_VOID_RETURN_MARK(CallVoidMethodV); |
1871 DT_VOID_RETURN_MARK(CallVoidMethodV); |
1922 |
1872 |
1923 JavaValue jvalue(T_VOID); |
1873 JavaValue jvalue(T_VOID); |
1924 JNI_ArgumentPusherVaArg ap(methodID, args); |
1874 JNI_ArgumentPusherVaArg ap(methodID, args); |
1929 JNI_ENTRY(void, jni_CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args)) |
1879 JNI_ENTRY(void, jni_CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args)) |
1930 JNIWrapper("CallVoidMethodA"); |
1880 JNIWrapper("CallVoidMethodA"); |
1931 #ifndef USDT2 |
1881 #ifndef USDT2 |
1932 DTRACE_PROBE3(hotspot_jni, CallVoidMethodA__entry, env, obj, methodID); |
1882 DTRACE_PROBE3(hotspot_jni, CallVoidMethodA__entry, env, obj, methodID); |
1933 #else /* USDT2 */ |
1883 #else /* USDT2 */ |
1934 HOTSPOT_JNI_CALLVOIDMETHODA_ENTRY( |
1884 HOTSPOT_JNI_CALLVOIDMETHODA_ENTRY(env, obj, (uintptr_t) methodID); |
1935 env, obj, (uintptr_t) methodID); |
|
1936 #endif /* USDT2 */ |
1885 #endif /* USDT2 */ |
1937 DT_VOID_RETURN_MARK(CallVoidMethodA); |
1886 DT_VOID_RETURN_MARK(CallVoidMethodA); |
1938 |
1887 |
1939 JavaValue jvalue(T_VOID); |
1888 JavaValue jvalue(T_VOID); |
1940 JNI_ArgumentPusherArray ap(methodID, args); |
1889 JNI_ArgumentPusherArray ap(methodID, args); |
2192 |
2141 |
2193 #ifndef USDT2 |
2142 #ifndef USDT2 |
2194 DTRACE_PROBE4(hotspot_jni, CallNonvirtualVoidMethod__entry, |
2143 DTRACE_PROBE4(hotspot_jni, CallNonvirtualVoidMethod__entry, |
2195 env, obj, cls, methodID); |
2144 env, obj, cls, methodID); |
2196 #else /* USDT2 */ |
2145 #else /* USDT2 */ |
2197 HOTSPOT_JNI_CALLNONVIRTUALVOIDMETHOD_ENTRY( |
2146 HOTSPOT_JNI_CALLNONVIRTUALVOIDMETHOD_ENTRY(env, obj, cls, (uintptr_t) methodID); |
2198 env, obj, cls, (uintptr_t) methodID); |
|
2199 #endif /* USDT2 */ |
2147 #endif /* USDT2 */ |
2200 DT_VOID_RETURN_MARK(CallNonvirtualVoidMethod); |
2148 DT_VOID_RETURN_MARK(CallNonvirtualVoidMethod); |
2201 |
2149 |
2202 va_list args; |
2150 va_list args; |
2203 va_start(args, methodID); |
2151 va_start(args, methodID); |
2494 JNI_ENTRY(void, jni_CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID methodID, ...)) |
2442 JNI_ENTRY(void, jni_CallStaticVoidMethod(JNIEnv *env, jclass cls, jmethodID methodID, ...)) |
2495 JNIWrapper("CallStaticVoidMethod"); |
2443 JNIWrapper("CallStaticVoidMethod"); |
2496 #ifndef USDT2 |
2444 #ifndef USDT2 |
2497 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethod__entry, env, cls, methodID); |
2445 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethod__entry, env, cls, methodID); |
2498 #else /* USDT2 */ |
2446 #else /* USDT2 */ |
2499 HOTSPOT_JNI_CALLSTATICVOIDMETHOD_ENTRY( |
2447 HOTSPOT_JNI_CALLSTATICVOIDMETHOD_ENTRY(env, cls, (uintptr_t) methodID); |
2500 env, cls, (uintptr_t) methodID); |
|
2501 #endif /* USDT2 */ |
2448 #endif /* USDT2 */ |
2502 DT_VOID_RETURN_MARK(CallStaticVoidMethod); |
2449 DT_VOID_RETURN_MARK(CallStaticVoidMethod); |
2503 |
2450 |
2504 va_list args; |
2451 va_list args; |
2505 va_start(args, methodID); |
2452 va_start(args, methodID); |
2513 JNI_ENTRY(void, jni_CallStaticVoidMethodV(JNIEnv *env, jclass cls, jmethodID methodID, va_list args)) |
2460 JNI_ENTRY(void, jni_CallStaticVoidMethodV(JNIEnv *env, jclass cls, jmethodID methodID, va_list args)) |
2514 JNIWrapper("CallStaticVoidMethodV"); |
2461 JNIWrapper("CallStaticVoidMethodV"); |
2515 #ifndef USDT2 |
2462 #ifndef USDT2 |
2516 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethodV__entry, env, cls, methodID); |
2463 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethodV__entry, env, cls, methodID); |
2517 #else /* USDT2 */ |
2464 #else /* USDT2 */ |
2518 HOTSPOT_JNI_CALLSTATICVOIDMETHODV_ENTRY( |
2465 HOTSPOT_JNI_CALLSTATICVOIDMETHODV_ENTRY(env, cls, (uintptr_t) methodID); |
2519 env, cls, (uintptr_t) methodID); |
|
2520 #endif /* USDT2 */ |
2466 #endif /* USDT2 */ |
2521 DT_VOID_RETURN_MARK(CallStaticVoidMethodV); |
2467 DT_VOID_RETURN_MARK(CallStaticVoidMethodV); |
2522 |
2468 |
2523 JavaValue jvalue(T_VOID); |
2469 JavaValue jvalue(T_VOID); |
2524 JNI_ArgumentPusherVaArg ap(methodID, args); |
2470 JNI_ArgumentPusherVaArg ap(methodID, args); |
2529 JNI_ENTRY(void, jni_CallStaticVoidMethodA(JNIEnv *env, jclass cls, jmethodID methodID, const jvalue *args)) |
2475 JNI_ENTRY(void, jni_CallStaticVoidMethodA(JNIEnv *env, jclass cls, jmethodID methodID, const jvalue *args)) |
2530 JNIWrapper("CallStaticVoidMethodA"); |
2476 JNIWrapper("CallStaticVoidMethodA"); |
2531 #ifndef USDT2 |
2477 #ifndef USDT2 |
2532 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethodA__entry, env, cls, methodID); |
2478 DTRACE_PROBE3(hotspot_jni, CallStaticVoidMethodA__entry, env, cls, methodID); |
2533 #else /* USDT2 */ |
2479 #else /* USDT2 */ |
2534 HOTSPOT_JNI_CALLSTATICVOIDMETHODA_ENTRY( |
2480 HOTSPOT_JNI_CALLSTATICVOIDMETHODA_ENTRY(env, cls, (uintptr_t) methodID); |
2535 env, cls, (uintptr_t) methodID); |
|
2536 #endif /* USDT2 */ |
2481 #endif /* USDT2 */ |
2537 DT_VOID_RETURN_MARK(CallStaticVoidMethodA); |
2482 DT_VOID_RETURN_MARK(CallStaticVoidMethodA); |
2538 |
2483 |
2539 JavaValue jvalue(T_VOID); |
2484 JavaValue jvalue(T_VOID); |
2540 JNI_ArgumentPusherArray ap(methodID, args); |
2485 JNI_ArgumentPusherArray ap(methodID, args); |
2558 const char *name, const char *sig)) |
2503 const char *name, const char *sig)) |
2559 JNIWrapper("GetFieldID"); |
2504 JNIWrapper("GetFieldID"); |
2560 #ifndef USDT2 |
2505 #ifndef USDT2 |
2561 DTRACE_PROBE4(hotspot_jni, GetFieldID__entry, env, clazz, name, sig); |
2506 DTRACE_PROBE4(hotspot_jni, GetFieldID__entry, env, clazz, name, sig); |
2562 #else /* USDT2 */ |
2507 #else /* USDT2 */ |
2563 HOTSPOT_JNI_GETFIELDID_ENTRY( |
2508 HOTSPOT_JNI_GETFIELDID_ENTRY(env, clazz, (char *) name, (char *) sig); |
2564 env, clazz, (char *) name, (char *) sig); |
|
2565 #endif /* USDT2 */ |
2509 #endif /* USDT2 */ |
2566 jfieldID ret = 0; |
2510 jfieldID ret = 0; |
2567 DT_RETURN_MARK(GetFieldID, jfieldID, (const jfieldID&)ret); |
2511 DT_RETURN_MARK(GetFieldID, jfieldID, (const jfieldID&)ret); |
2568 |
2512 |
2569 // The class should have been loaded (we have an instance of the class |
2513 // The class should have been loaded (we have an instance of the class |
2595 JNI_ENTRY(jobject, jni_GetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID)) |
2539 JNI_ENTRY(jobject, jni_GetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID)) |
2596 JNIWrapper("GetObjectField"); |
2540 JNIWrapper("GetObjectField"); |
2597 #ifndef USDT2 |
2541 #ifndef USDT2 |
2598 DTRACE_PROBE3(hotspot_jni, GetObjectField__entry, env, obj, fieldID); |
2542 DTRACE_PROBE3(hotspot_jni, GetObjectField__entry, env, obj, fieldID); |
2599 #else /* USDT2 */ |
2543 #else /* USDT2 */ |
2600 HOTSPOT_JNI_GETOBJECTFIELD_ENTRY( |
2544 HOTSPOT_JNI_GETOBJECTFIELD_ENTRY(env, obj, (uintptr_t) fieldID); |
2601 env, obj, (uintptr_t) fieldID); |
|
2602 #endif /* USDT2 */ |
2545 #endif /* USDT2 */ |
2603 oop o = JNIHandles::resolve_non_null(obj); |
2546 oop o = JNIHandles::resolve_non_null(obj); |
2604 Klass* k = o->klass(); |
2547 Klass* k = o->klass(); |
2605 int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); |
2548 int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); |
2606 // Keep JVMTI addition small and only check enabled flag here. |
2549 // Keep JVMTI addition small and only check enabled flag here. |
2630 } |
2573 } |
2631 #endif // INCLUDE_ALL_GCS |
2574 #endif // INCLUDE_ALL_GCS |
2632 #ifndef USDT2 |
2575 #ifndef USDT2 |
2633 DTRACE_PROBE1(hotspot_jni, GetObjectField__return, ret); |
2576 DTRACE_PROBE1(hotspot_jni, GetObjectField__return, ret); |
2634 #else /* USDT2 */ |
2577 #else /* USDT2 */ |
2635 HOTSPOT_JNI_GETOBJECTFIELD_RETURN( |
2578 HOTSPOT_JNI_GETOBJECTFIELD_RETURN(ret); |
2636 ret); |
|
2637 #endif /* USDT2 */ |
2579 #endif /* USDT2 */ |
2638 return ret; |
2580 return ret; |
2639 JNI_END |
2581 JNI_END |
2640 |
2582 |
2641 |
2583 |
2756 JNI_QUICK_ENTRY(void, jni_SetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID, jobject value)) |
2698 JNI_QUICK_ENTRY(void, jni_SetObjectField(JNIEnv *env, jobject obj, jfieldID fieldID, jobject value)) |
2757 JNIWrapper("SetObjectField"); |
2699 JNIWrapper("SetObjectField"); |
2758 #ifndef USDT2 |
2700 #ifndef USDT2 |
2759 DTRACE_PROBE4(hotspot_jni, SetObjectField__entry, env, obj, fieldID, value); |
2701 DTRACE_PROBE4(hotspot_jni, SetObjectField__entry, env, obj, fieldID, value); |
2760 #else /* USDT2 */ |
2702 #else /* USDT2 */ |
2761 HOTSPOT_JNI_SETOBJECTFIELD_ENTRY( |
2703 HOTSPOT_JNI_SETOBJECTFIELD_ENTRY(env, obj, (uintptr_t) fieldID, value); |
2762 env, obj, (uintptr_t) fieldID, value); |
|
2763 #endif /* USDT2 */ |
2704 #endif /* USDT2 */ |
2764 oop o = JNIHandles::resolve_non_null(obj); |
2705 oop o = JNIHandles::resolve_non_null(obj); |
2765 Klass* k = o->klass(); |
2706 Klass* k = o->klass(); |
2766 int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); |
2707 int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); |
2767 // Keep JVMTI addition small and only check enabled flag here. |
2708 // Keep JVMTI addition small and only check enabled flag here. |
2774 } |
2715 } |
2775 o->obj_field_put(offset, JNIHandles::resolve(value)); |
2716 o->obj_field_put(offset, JNIHandles::resolve(value)); |
2776 #ifndef USDT2 |
2717 #ifndef USDT2 |
2777 DTRACE_PROBE(hotspot_jni, SetObjectField__return); |
2718 DTRACE_PROBE(hotspot_jni, SetObjectField__return); |
2778 #else /* USDT2 */ |
2719 #else /* USDT2 */ |
2779 HOTSPOT_JNI_SETOBJECTFIELD_RETURN( |
2720 HOTSPOT_JNI_SETOBJECTFIELD_RETURN(); |
2780 ); |
|
2781 #endif /* USDT2 */ |
2721 #endif /* USDT2 */ |
2782 JNI_END |
2722 JNI_END |
2783 |
2723 |
2784 #ifndef USDT2 |
2724 #ifndef USDT2 |
2785 #define DEFINE_SETFIELD(Argument,Fieldname,Result,SigType,unionType) \ |
2725 #define DEFINE_SETFIELD(Argument,Fieldname,Result,SigType,unionType) \ |
2878 JNIWrapper("ToReflectedField"); |
2818 JNIWrapper("ToReflectedField"); |
2879 #ifndef USDT2 |
2819 #ifndef USDT2 |
2880 DTRACE_PROBE4(hotspot_jni, ToReflectedField__entry, |
2820 DTRACE_PROBE4(hotspot_jni, ToReflectedField__entry, |
2881 env, cls, fieldID, isStatic); |
2821 env, cls, fieldID, isStatic); |
2882 #else /* USDT2 */ |
2822 #else /* USDT2 */ |
2883 HOTSPOT_JNI_TOREFLECTEDFIELD_ENTRY( |
2823 HOTSPOT_JNI_TOREFLECTEDFIELD_ENTRY(env, cls, (uintptr_t) fieldID, isStatic); |
2884 env, cls, (uintptr_t) fieldID, isStatic); |
|
2885 #endif /* USDT2 */ |
2824 #endif /* USDT2 */ |
2886 jobject ret = NULL; |
2825 jobject ret = NULL; |
2887 DT_RETURN_MARK(ToReflectedField, jobject, (const jobject&)ret); |
2826 DT_RETURN_MARK(ToReflectedField, jobject, (const jobject&)ret); |
2888 |
2827 |
2889 fieldDescriptor fd; |
2828 fieldDescriptor fd; |
2923 const char *name, const char *sig)) |
2862 const char *name, const char *sig)) |
2924 JNIWrapper("GetStaticFieldID"); |
2863 JNIWrapper("GetStaticFieldID"); |
2925 #ifndef USDT2 |
2864 #ifndef USDT2 |
2926 DTRACE_PROBE4(hotspot_jni, GetStaticFieldID__entry, env, clazz, name, sig); |
2865 DTRACE_PROBE4(hotspot_jni, GetStaticFieldID__entry, env, clazz, name, sig); |
2927 #else /* USDT2 */ |
2866 #else /* USDT2 */ |
2928 HOTSPOT_JNI_GETSTATICFIELDID_ENTRY( |
2867 HOTSPOT_JNI_GETSTATICFIELDID_ENTRY(env, clazz, (char *) name, (char *) sig); |
2929 env, clazz, (char *) name, (char *) sig); |
|
2930 #endif /* USDT2 */ |
2868 #endif /* USDT2 */ |
2931 jfieldID ret = NULL; |
2869 jfieldID ret = NULL; |
2932 DT_RETURN_MARK(GetStaticFieldID, jfieldID, (const jfieldID&)ret); |
2870 DT_RETURN_MARK(GetStaticFieldID, jfieldID, (const jfieldID&)ret); |
2933 |
2871 |
2934 // The class should have been loaded (we have an instance of the class |
2872 // The class should have been loaded (we have an instance of the class |
2964 JNI_ENTRY(jobject, jni_GetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID)) |
2902 JNI_ENTRY(jobject, jni_GetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID)) |
2965 JNIWrapper("GetStaticObjectField"); |
2903 JNIWrapper("GetStaticObjectField"); |
2966 #ifndef USDT2 |
2904 #ifndef USDT2 |
2967 DTRACE_PROBE3(hotspot_jni, GetStaticObjectField__entry, env, clazz, fieldID); |
2905 DTRACE_PROBE3(hotspot_jni, GetStaticObjectField__entry, env, clazz, fieldID); |
2968 #else /* USDT2 */ |
2906 #else /* USDT2 */ |
2969 HOTSPOT_JNI_GETSTATICOBJECTFIELD_ENTRY( |
2907 HOTSPOT_JNI_GETSTATICOBJECTFIELD_ENTRY(env, clazz, (uintptr_t) fieldID); |
2970 env, clazz, (uintptr_t) fieldID); |
|
2971 #endif /* USDT2 */ |
2908 #endif /* USDT2 */ |
2972 #if INCLUDE_JNI_CHECK |
2909 #if INCLUDE_JNI_CHECK |
2973 DEBUG_ONLY(Klass* param_k = jniCheck::validate_class(thread, clazz);) |
2910 DEBUG_ONLY(Klass* param_k = jniCheck::validate_class(thread, clazz);) |
2974 #endif // INCLUDE_JNI_CHECK |
2911 #endif // INCLUDE_JNI_CHECK |
2975 JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); |
2912 JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); |
2981 } |
2918 } |
2982 jobject ret = JNIHandles::make_local(id->holder()->java_mirror()->obj_field(id->offset())); |
2919 jobject ret = JNIHandles::make_local(id->holder()->java_mirror()->obj_field(id->offset())); |
2983 #ifndef USDT2 |
2920 #ifndef USDT2 |
2984 DTRACE_PROBE1(hotspot_jni, GetStaticObjectField__return, ret); |
2921 DTRACE_PROBE1(hotspot_jni, GetStaticObjectField__return, ret); |
2985 #else /* USDT2 */ |
2922 #else /* USDT2 */ |
2986 HOTSPOT_JNI_GETSTATICOBJECTFIELD_RETURN( |
2923 HOTSPOT_JNI_GETSTATICOBJECTFIELD_RETURN(ret); |
2987 ret); |
|
2988 #endif /* USDT2 */ |
2924 #endif /* USDT2 */ |
2989 return ret; |
2925 return ret; |
2990 JNI_END |
2926 JNI_END |
2991 |
2927 |
2992 #ifndef USDT2 |
2928 #ifndef USDT2 |
3067 JNI_ENTRY(void, jni_SetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value)) |
3003 JNI_ENTRY(void, jni_SetStaticObjectField(JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value)) |
3068 JNIWrapper("SetStaticObjectField"); |
3004 JNIWrapper("SetStaticObjectField"); |
3069 #ifndef USDT2 |
3005 #ifndef USDT2 |
3070 DTRACE_PROBE4(hotspot_jni, SetStaticObjectField__entry, env, clazz, fieldID, value); |
3006 DTRACE_PROBE4(hotspot_jni, SetStaticObjectField__entry, env, clazz, fieldID, value); |
3071 #else /* USDT2 */ |
3007 #else /* USDT2 */ |
3072 HOTSPOT_JNI_SETSTATICOBJECTFIELD_ENTRY( |
3008 HOTSPOT_JNI_SETSTATICOBJECTFIELD_ENTRY(env, clazz, (uintptr_t) fieldID, value); |
3073 env, clazz, (uintptr_t) fieldID, value); |
|
3074 #endif /* USDT2 */ |
3009 #endif /* USDT2 */ |
3075 JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); |
3010 JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); |
3076 assert(id->is_static_field_id(), "invalid static field id"); |
3011 assert(id->is_static_field_id(), "invalid static field id"); |
3077 // Keep JVMTI addition small and only check enabled flag here. |
3012 // Keep JVMTI addition small and only check enabled flag here. |
3078 // jni_SetField_probe() assumes that is okay to create handles. |
3013 // jni_SetField_probe() assumes that is okay to create handles. |
3083 } |
3018 } |
3084 id->holder()->java_mirror()->obj_field_put(id->offset(), JNIHandles::resolve(value)); |
3019 id->holder()->java_mirror()->obj_field_put(id->offset(), JNIHandles::resolve(value)); |
3085 #ifndef USDT2 |
3020 #ifndef USDT2 |
3086 DTRACE_PROBE(hotspot_jni, SetStaticObjectField__return); |
3021 DTRACE_PROBE(hotspot_jni, SetStaticObjectField__return); |
3087 #else /* USDT2 */ |
3022 #else /* USDT2 */ |
3088 HOTSPOT_JNI_SETSTATICOBJECTFIELD_RETURN( |
3023 HOTSPOT_JNI_SETSTATICOBJECTFIELD_RETURN(); |
3089 ); |
|
3090 #endif /* USDT2 */ |
3024 #endif /* USDT2 */ |
3091 JNI_END |
3025 JNI_END |
3092 |
3026 |
3093 |
3027 |
3094 #ifndef USDT2 |
3028 #ifndef USDT2 |
3187 JNI_ENTRY(jstring, jni_NewString(JNIEnv *env, const jchar *unicodeChars, jsize len)) |
3121 JNI_ENTRY(jstring, jni_NewString(JNIEnv *env, const jchar *unicodeChars, jsize len)) |
3188 JNIWrapper("NewString"); |
3122 JNIWrapper("NewString"); |
3189 #ifndef USDT2 |
3123 #ifndef USDT2 |
3190 DTRACE_PROBE3(hotspot_jni, NewString__entry, env, unicodeChars, len); |
3124 DTRACE_PROBE3(hotspot_jni, NewString__entry, env, unicodeChars, len); |
3191 #else /* USDT2 */ |
3125 #else /* USDT2 */ |
3192 HOTSPOT_JNI_NEWSTRING_ENTRY( |
3126 HOTSPOT_JNI_NEWSTRING_ENTRY(env, (uint16_t *) unicodeChars, len); |
3193 env, (uint16_t *) unicodeChars, len); |
|
3194 #endif /* USDT2 */ |
3127 #endif /* USDT2 */ |
3195 jstring ret = NULL; |
3128 jstring ret = NULL; |
3196 DT_RETURN_MARK(NewString, jstring, (const jstring&)ret); |
3129 DT_RETURN_MARK(NewString, jstring, (const jstring&)ret); |
3197 oop string=java_lang_String::create_oop_from_unicode((jchar*) unicodeChars, len, CHECK_NULL); |
3130 oop string=java_lang_String::create_oop_from_unicode((jchar*) unicodeChars, len, CHECK_NULL); |
3198 ret = (jstring) JNIHandles::make_local(env, string); |
3131 ret = (jstring) JNIHandles::make_local(env, string); |
3203 JNI_QUICK_ENTRY(jsize, jni_GetStringLength(JNIEnv *env, jstring string)) |
3136 JNI_QUICK_ENTRY(jsize, jni_GetStringLength(JNIEnv *env, jstring string)) |
3204 JNIWrapper("GetStringLength"); |
3137 JNIWrapper("GetStringLength"); |
3205 #ifndef USDT2 |
3138 #ifndef USDT2 |
3206 DTRACE_PROBE2(hotspot_jni, GetStringLength__entry, env, string); |
3139 DTRACE_PROBE2(hotspot_jni, GetStringLength__entry, env, string); |
3207 #else /* USDT2 */ |
3140 #else /* USDT2 */ |
3208 HOTSPOT_JNI_GETSTRINGLENGTH_ENTRY( |
3141 HOTSPOT_JNI_GETSTRINGLENGTH_ENTRY(env, string); |
3209 env, string); |
|
3210 #endif /* USDT2 */ |
3142 #endif /* USDT2 */ |
3211 jsize ret = 0; |
3143 jsize ret = 0; |
3212 oop s = JNIHandles::resolve_non_null(string); |
3144 oop s = JNIHandles::resolve_non_null(string); |
3213 if (java_lang_String::value(s) != NULL) { |
3145 if (java_lang_String::value(s) != NULL) { |
3214 ret = java_lang_String::length(s); |
3146 ret = java_lang_String::length(s); |
3215 } |
3147 } |
3216 #ifndef USDT2 |
3148 #ifndef USDT2 |
3217 DTRACE_PROBE1(hotspot_jni, GetStringLength__return, ret); |
3149 DTRACE_PROBE1(hotspot_jni, GetStringLength__return, ret); |
3218 #else /* USDT2 */ |
3150 #else /* USDT2 */ |
3219 HOTSPOT_JNI_GETSTRINGLENGTH_RETURN( |
3151 HOTSPOT_JNI_GETSTRINGLENGTH_RETURN(ret); |
3220 ret); |
|
3221 #endif /* USDT2 */ |
3152 #endif /* USDT2 */ |
3222 return ret; |
3153 return ret; |
3223 JNI_END |
3154 JNI_END |
3224 |
3155 |
3225 |
3156 |
3227 JNIEnv *env, jstring string, jboolean *isCopy)) |
3158 JNIEnv *env, jstring string, jboolean *isCopy)) |
3228 JNIWrapper("GetStringChars"); |
3159 JNIWrapper("GetStringChars"); |
3229 #ifndef USDT2 |
3160 #ifndef USDT2 |
3230 DTRACE_PROBE3(hotspot_jni, GetStringChars__entry, env, string, isCopy); |
3161 DTRACE_PROBE3(hotspot_jni, GetStringChars__entry, env, string, isCopy); |
3231 #else /* USDT2 */ |
3162 #else /* USDT2 */ |
3232 HOTSPOT_JNI_GETSTRINGCHARS_ENTRY( |
3163 HOTSPOT_JNI_GETSTRINGCHARS_ENTRY(env, string, (uintptr_t *) isCopy); |
3233 env, string, (uintptr_t *) isCopy); |
|
3234 #endif /* USDT2 */ |
3164 #endif /* USDT2 */ |
3235 jchar* buf = NULL; |
3165 jchar* buf = NULL; |
3236 oop s = JNIHandles::resolve_non_null(string); |
3166 oop s = JNIHandles::resolve_non_null(string); |
3237 typeArrayOop s_value = java_lang_String::value(s); |
3167 typeArrayOop s_value = java_lang_String::value(s); |
3238 if (s_value != NULL) { |
3168 if (s_value != NULL) { |
3252 } |
3182 } |
3253 } |
3183 } |
3254 #ifndef USDT2 |
3184 #ifndef USDT2 |
3255 DTRACE_PROBE1(hotspot_jni, GetStringChars__return, buf); |
3185 DTRACE_PROBE1(hotspot_jni, GetStringChars__return, buf); |
3256 #else /* USDT2 */ |
3186 #else /* USDT2 */ |
3257 HOTSPOT_JNI_GETSTRINGCHARS_RETURN( |
3187 HOTSPOT_JNI_GETSTRINGCHARS_RETURN(buf); |
3258 buf); |
|
3259 #endif /* USDT2 */ |
3188 #endif /* USDT2 */ |
3260 return buf; |
3189 return buf; |
3261 JNI_END |
3190 JNI_END |
3262 |
3191 |
3263 |
3192 |
3264 JNI_QUICK_ENTRY(void, jni_ReleaseStringChars(JNIEnv *env, jstring str, const jchar *chars)) |
3193 JNI_QUICK_ENTRY(void, jni_ReleaseStringChars(JNIEnv *env, jstring str, const jchar *chars)) |
3265 JNIWrapper("ReleaseStringChars"); |
3194 JNIWrapper("ReleaseStringChars"); |
3266 #ifndef USDT2 |
3195 #ifndef USDT2 |
3267 DTRACE_PROBE3(hotspot_jni, ReleaseStringChars__entry, env, str, chars); |
3196 DTRACE_PROBE3(hotspot_jni, ReleaseStringChars__entry, env, str, chars); |
3268 #else /* USDT2 */ |
3197 #else /* USDT2 */ |
3269 HOTSPOT_JNI_RELEASESTRINGCHARS_ENTRY( |
3198 HOTSPOT_JNI_RELEASESTRINGCHARS_ENTRY(env, str, (uint16_t *) chars); |
3270 env, str, (uint16_t *) chars); |
|
3271 #endif /* USDT2 */ |
3199 #endif /* USDT2 */ |
3272 //%note jni_6 |
3200 //%note jni_6 |
3273 if (chars != NULL) { |
3201 if (chars != NULL) { |
3274 // Since String objects are supposed to be immutable, don't copy any |
3202 // Since String objects are supposed to be immutable, don't copy any |
3275 // new data back. A bad user will have to go after the char array. |
3203 // new data back. A bad user will have to go after the char array. |
3276 FreeHeap((void*) chars); |
3204 FreeHeap((void*) chars); |
3277 } |
3205 } |
3278 #ifndef USDT2 |
3206 #ifndef USDT2 |
3279 DTRACE_PROBE(hotspot_jni, ReleaseStringChars__return); |
3207 DTRACE_PROBE(hotspot_jni, ReleaseStringChars__return); |
3280 #else /* USDT2 */ |
3208 #else /* USDT2 */ |
3281 HOTSPOT_JNI_RELEASESTRINGCHARS_RETURN( |
3209 HOTSPOT_JNI_RELEASESTRINGCHARS_RETURN(); |
3282 ); |
|
3283 #endif /* USDT2 */ |
3210 #endif /* USDT2 */ |
3284 JNI_END |
3211 JNI_END |
3285 |
3212 |
3286 |
3213 |
3287 // UTF Interface |
3214 // UTF Interface |
3296 JNI_ENTRY(jstring, jni_NewStringUTF(JNIEnv *env, const char *bytes)) |
3223 JNI_ENTRY(jstring, jni_NewStringUTF(JNIEnv *env, const char *bytes)) |
3297 JNIWrapper("NewStringUTF"); |
3224 JNIWrapper("NewStringUTF"); |
3298 #ifndef USDT2 |
3225 #ifndef USDT2 |
3299 DTRACE_PROBE2(hotspot_jni, NewStringUTF__entry, env, bytes); |
3226 DTRACE_PROBE2(hotspot_jni, NewStringUTF__entry, env, bytes); |
3300 #else /* USDT2 */ |
3227 #else /* USDT2 */ |
3301 HOTSPOT_JNI_NEWSTRINGUTF_ENTRY( |
3228 HOTSPOT_JNI_NEWSTRINGUTF_ENTRY(env, (char *) bytes); |
3302 env, (char *) bytes); |
|
3303 #endif /* USDT2 */ |
3229 #endif /* USDT2 */ |
3304 jstring ret; |
3230 jstring ret; |
3305 DT_RETURN_MARK(NewStringUTF, jstring, (const jstring&)ret); |
3231 DT_RETURN_MARK(NewStringUTF, jstring, (const jstring&)ret); |
3306 |
3232 |
3307 oop result = java_lang_String::create_oop_from_str((char*) bytes, CHECK_NULL); |
3233 oop result = java_lang_String::create_oop_from_str((char*) bytes, CHECK_NULL); |
3313 JNI_ENTRY(jsize, jni_GetStringUTFLength(JNIEnv *env, jstring string)) |
3239 JNI_ENTRY(jsize, jni_GetStringUTFLength(JNIEnv *env, jstring string)) |
3314 JNIWrapper("GetStringUTFLength"); |
3240 JNIWrapper("GetStringUTFLength"); |
3315 #ifndef USDT2 |
3241 #ifndef USDT2 |
3316 DTRACE_PROBE2(hotspot_jni, GetStringUTFLength__entry, env, string); |
3242 DTRACE_PROBE2(hotspot_jni, GetStringUTFLength__entry, env, string); |
3317 #else /* USDT2 */ |
3243 #else /* USDT2 */ |
3318 HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY( |
3244 HOTSPOT_JNI_GETSTRINGUTFLENGTH_ENTRY(env, string); |
3319 env, string); |
|
3320 #endif /* USDT2 */ |
3245 #endif /* USDT2 */ |
3321 jsize ret = 0; |
3246 jsize ret = 0; |
3322 oop java_string = JNIHandles::resolve_non_null(string); |
3247 oop java_string = JNIHandles::resolve_non_null(string); |
3323 if (java_lang_String::value(java_string) != NULL) { |
3248 if (java_lang_String::value(java_string) != NULL) { |
3324 ret = java_lang_String::utf8_length(java_string); |
3249 ret = java_lang_String::utf8_length(java_string); |
3325 } |
3250 } |
3326 #ifndef USDT2 |
3251 #ifndef USDT2 |
3327 DTRACE_PROBE1(hotspot_jni, GetStringUTFLength__return, ret); |
3252 DTRACE_PROBE1(hotspot_jni, GetStringUTFLength__return, ret); |
3328 #else /* USDT2 */ |
3253 #else /* USDT2 */ |
3329 HOTSPOT_JNI_GETSTRINGUTFLENGTH_RETURN( |
3254 HOTSPOT_JNI_GETSTRINGUTFLENGTH_RETURN(ret); |
3330 ret); |
|
3331 #endif /* USDT2 */ |
3255 #endif /* USDT2 */ |
3332 return ret; |
3256 return ret; |
3333 JNI_END |
3257 JNI_END |
3334 |
3258 |
3335 |
3259 |
3336 JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy)) |
3260 JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy)) |
3337 JNIWrapper("GetStringUTFChars"); |
3261 JNIWrapper("GetStringUTFChars"); |
3338 #ifndef USDT2 |
3262 #ifndef USDT2 |
3339 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy); |
3263 DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy); |
3340 #else /* USDT2 */ |
3264 #else /* USDT2 */ |
3341 HOTSPOT_JNI_GETSTRINGUTFCHARS_ENTRY( |
3265 HOTSPOT_JNI_GETSTRINGUTFCHARS_ENTRY(env, string, (uintptr_t *) isCopy); |
3342 env, string, (uintptr_t *) isCopy); |
|
3343 #endif /* USDT2 */ |
3266 #endif /* USDT2 */ |
3344 char* result = NULL; |
3267 char* result = NULL; |
3345 oop java_string = JNIHandles::resolve_non_null(string); |
3268 oop java_string = JNIHandles::resolve_non_null(string); |
3346 if (java_lang_String::value(java_string) != NULL) { |
3269 if (java_lang_String::value(java_string) != NULL) { |
3347 size_t length = java_lang_String::utf8_length(java_string); |
3270 size_t length = java_lang_String::utf8_length(java_string); |
3355 } |
3278 } |
3356 } |
3279 } |
3357 #ifndef USDT2 |
3280 #ifndef USDT2 |
3358 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result); |
3281 DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result); |
3359 #else /* USDT2 */ |
3282 #else /* USDT2 */ |
3360 HOTSPOT_JNI_GETSTRINGUTFCHARS_RETURN( |
3283 HOTSPOT_JNI_GETSTRINGUTFCHARS_RETURN(result); |
3361 result); |
|
3362 #endif /* USDT2 */ |
3284 #endif /* USDT2 */ |
3363 return result; |
3285 return result; |
3364 JNI_END |
3286 JNI_END |
3365 |
3287 |
3366 |
3288 |
3367 JNI_LEAF(void, jni_ReleaseStringUTFChars(JNIEnv *env, jstring str, const char *chars)) |
3289 JNI_LEAF(void, jni_ReleaseStringUTFChars(JNIEnv *env, jstring str, const char *chars)) |
3368 JNIWrapper("ReleaseStringUTFChars"); |
3290 JNIWrapper("ReleaseStringUTFChars"); |
3369 #ifndef USDT2 |
3291 #ifndef USDT2 |
3370 DTRACE_PROBE3(hotspot_jni, ReleaseStringUTFChars__entry, env, str, chars); |
3292 DTRACE_PROBE3(hotspot_jni, ReleaseStringUTFChars__entry, env, str, chars); |
3371 #else /* USDT2 */ |
3293 #else /* USDT2 */ |
3372 HOTSPOT_JNI_RELEASESTRINGUTFCHARS_ENTRY( |
3294 HOTSPOT_JNI_RELEASESTRINGUTFCHARS_ENTRY(env, str, (char *) chars); |
3373 env, str, (char *) chars); |
|
3374 #endif /* USDT2 */ |
3295 #endif /* USDT2 */ |
3375 if (chars != NULL) { |
3296 if (chars != NULL) { |
3376 FreeHeap((char*) chars); |
3297 FreeHeap((char*) chars); |
3377 } |
3298 } |
3378 #ifndef USDT2 |
3299 #ifndef USDT2 |
3379 DTRACE_PROBE(hotspot_jni, ReleaseStringUTFChars__return); |
3300 DTRACE_PROBE(hotspot_jni, ReleaseStringUTFChars__return); |
3380 #else /* USDT2 */ |
3301 #else /* USDT2 */ |
3381 HOTSPOT_JNI_RELEASESTRINGUTFCHARS_RETURN( |
3302 HOTSPOT_JNI_RELEASESTRINGUTFCHARS_RETURN(); |
3382 ); |
|
3383 #endif /* USDT2 */ |
3303 #endif /* USDT2 */ |
3384 JNI_END |
3304 JNI_END |
3385 |
3305 |
3386 |
3306 |
3387 JNI_QUICK_ENTRY(jsize, jni_GetArrayLength(JNIEnv *env, jarray array)) |
3307 JNI_QUICK_ENTRY(jsize, jni_GetArrayLength(JNIEnv *env, jarray array)) |
3388 JNIWrapper("GetArrayLength"); |
3308 JNIWrapper("GetArrayLength"); |
3389 #ifndef USDT2 |
3309 #ifndef USDT2 |
3390 DTRACE_PROBE2(hotspot_jni, GetArrayLength__entry, env, array); |
3310 DTRACE_PROBE2(hotspot_jni, GetArrayLength__entry, env, array); |
3391 #else /* USDT2 */ |
3311 #else /* USDT2 */ |
3392 HOTSPOT_JNI_GETARRAYLENGTH_ENTRY( |
3312 HOTSPOT_JNI_GETARRAYLENGTH_ENTRY(env, array); |
3393 env, array); |
|
3394 #endif /* USDT2 */ |
3313 #endif /* USDT2 */ |
3395 arrayOop a = arrayOop(JNIHandles::resolve_non_null(array)); |
3314 arrayOop a = arrayOop(JNIHandles::resolve_non_null(array)); |
3396 assert(a->is_array(), "must be array"); |
3315 assert(a->is_array(), "must be array"); |
3397 jsize ret = a->length(); |
3316 jsize ret = a->length(); |
3398 #ifndef USDT2 |
3317 #ifndef USDT2 |
3399 DTRACE_PROBE1(hotspot_jni, GetArrayLength__return, ret); |
3318 DTRACE_PROBE1(hotspot_jni, GetArrayLength__return, ret); |
3400 #else /* USDT2 */ |
3319 #else /* USDT2 */ |
3401 HOTSPOT_JNI_GETARRAYLENGTH_RETURN( |
3320 HOTSPOT_JNI_GETARRAYLENGTH_RETURN(ret); |
3402 ret); |
|
3403 #endif /* USDT2 */ |
3321 #endif /* USDT2 */ |
3404 return ret; |
3322 return ret; |
3405 JNI_END |
3323 JNI_END |
3406 |
3324 |
3407 |
3325 |
3419 JNI_ENTRY(jobjectArray, jni_NewObjectArray(JNIEnv *env, jsize length, jclass elementClass, jobject initialElement)) |
3337 JNI_ENTRY(jobjectArray, jni_NewObjectArray(JNIEnv *env, jsize length, jclass elementClass, jobject initialElement)) |
3420 JNIWrapper("NewObjectArray"); |
3338 JNIWrapper("NewObjectArray"); |
3421 #ifndef USDT2 |
3339 #ifndef USDT2 |
3422 DTRACE_PROBE4(hotspot_jni, NewObjectArray__entry, env, length, elementClass, initialElement); |
3340 DTRACE_PROBE4(hotspot_jni, NewObjectArray__entry, env, length, elementClass, initialElement); |
3423 #else /* USDT2 */ |
3341 #else /* USDT2 */ |
3424 HOTSPOT_JNI_NEWOBJECTARRAY_ENTRY( |
3342 HOTSPOT_JNI_NEWOBJECTARRAY_ENTRY(env, length, elementClass, initialElement); |
3425 env, length, elementClass, initialElement); |
|
3426 #endif /* USDT2 */ |
3343 #endif /* USDT2 */ |
3427 jobjectArray ret = NULL; |
3344 jobjectArray ret = NULL; |
3428 DT_RETURN_MARK(NewObjectArray, jobjectArray, (const jobjectArray&)ret); |
3345 DT_RETURN_MARK(NewObjectArray, jobjectArray, (const jobjectArray&)ret); |
3429 KlassHandle ek(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(elementClass))); |
3346 KlassHandle ek(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(elementClass))); |
3430 Klass* ako = ek()->array_klass(CHECK_NULL); |
3347 Klass* ako = ek()->array_klass(CHECK_NULL); |
3451 JNI_ENTRY(jobject, jni_GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index)) |
3368 JNI_ENTRY(jobject, jni_GetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index)) |
3452 JNIWrapper("GetObjectArrayElement"); |
3369 JNIWrapper("GetObjectArrayElement"); |
3453 #ifndef USDT2 |
3370 #ifndef USDT2 |
3454 DTRACE_PROBE3(hotspot_jni, GetObjectArrayElement__entry, env, array, index); |
3371 DTRACE_PROBE3(hotspot_jni, GetObjectArrayElement__entry, env, array, index); |
3455 #else /* USDT2 */ |
3372 #else /* USDT2 */ |
3456 HOTSPOT_JNI_GETOBJECTARRAYELEMENT_ENTRY( |
3373 HOTSPOT_JNI_GETOBJECTARRAYELEMENT_ENTRY(env, array, index); |
3457 env, array, index); |
|
3458 #endif /* USDT2 */ |
3374 #endif /* USDT2 */ |
3459 jobject ret = NULL; |
3375 jobject ret = NULL; |
3460 DT_RETURN_MARK(GetObjectArrayElement, jobject, (const jobject&)ret); |
3376 DT_RETURN_MARK(GetObjectArrayElement, jobject, (const jobject&)ret); |
3461 objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array)); |
3377 objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array)); |
3462 if (a->is_within_bounds(index)) { |
3378 if (a->is_within_bounds(index)) { |
3479 JNI_ENTRY(void, jni_SetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index, jobject value)) |
3395 JNI_ENTRY(void, jni_SetObjectArrayElement(JNIEnv *env, jobjectArray array, jsize index, jobject value)) |
3480 JNIWrapper("SetObjectArrayElement"); |
3396 JNIWrapper("SetObjectArrayElement"); |
3481 #ifndef USDT2 |
3397 #ifndef USDT2 |
3482 DTRACE_PROBE4(hotspot_jni, SetObjectArrayElement__entry, env, array, index, value); |
3398 DTRACE_PROBE4(hotspot_jni, SetObjectArrayElement__entry, env, array, index, value); |
3483 #else /* USDT2 */ |
3399 #else /* USDT2 */ |
3484 HOTSPOT_JNI_SETOBJECTARRAYELEMENT_ENTRY( |
3400 HOTSPOT_JNI_SETOBJECTARRAYELEMENT_ENTRY(env, array, index, value); |
3485 env, array, index, value); |
|
3486 #endif /* USDT2 */ |
3401 #endif /* USDT2 */ |
3487 DT_VOID_RETURN_MARK(SetObjectArrayElement); |
3402 DT_VOID_RETURN_MARK(SetObjectArrayElement); |
3488 |
3403 |
3489 objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array)); |
3404 objArrayOop a = objArrayOop(JNIHandles::resolve_non_null(array)); |
3490 oop v = JNIHandles::resolve(value); |
3405 oop v = JNIHandles::resolve(value); |
4032 jint nMethods)) |
3947 jint nMethods)) |
4033 JNIWrapper("RegisterNatives"); |
3948 JNIWrapper("RegisterNatives"); |
4034 #ifndef USDT2 |
3949 #ifndef USDT2 |
4035 DTRACE_PROBE4(hotspot_jni, RegisterNatives__entry, env, clazz, methods, nMethods); |
3950 DTRACE_PROBE4(hotspot_jni, RegisterNatives__entry, env, clazz, methods, nMethods); |
4036 #else /* USDT2 */ |
3951 #else /* USDT2 */ |
4037 HOTSPOT_JNI_REGISTERNATIVES_ENTRY( |
3952 HOTSPOT_JNI_REGISTERNATIVES_ENTRY(env, clazz, (void *) methods, nMethods); |
4038 env, clazz, (void *) methods, nMethods); |
|
4039 #endif /* USDT2 */ |
3953 #endif /* USDT2 */ |
4040 jint ret = 0; |
3954 jint ret = 0; |
4041 DT_RETURN_MARK(RegisterNatives, jint, (const jint&)ret); |
3955 DT_RETURN_MARK(RegisterNatives, jint, (const jint&)ret); |
4042 |
3956 |
4043 KlassHandle h_k(thread, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); |
3957 KlassHandle h_k(thread, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); |
4075 JNI_ENTRY(jint, jni_UnregisterNatives(JNIEnv *env, jclass clazz)) |
3989 JNI_ENTRY(jint, jni_UnregisterNatives(JNIEnv *env, jclass clazz)) |
4076 JNIWrapper("UnregisterNatives"); |
3990 JNIWrapper("UnregisterNatives"); |
4077 #ifndef USDT2 |
3991 #ifndef USDT2 |
4078 DTRACE_PROBE2(hotspot_jni, UnregisterNatives__entry, env, clazz); |
3992 DTRACE_PROBE2(hotspot_jni, UnregisterNatives__entry, env, clazz); |
4079 #else /* USDT2 */ |
3993 #else /* USDT2 */ |
4080 HOTSPOT_JNI_UNREGISTERNATIVES_ENTRY( |
3994 HOTSPOT_JNI_UNREGISTERNATIVES_ENTRY(env, clazz); |
4081 env, clazz); |
|
4082 #endif /* USDT2 */ |
3995 #endif /* USDT2 */ |
4083 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); |
3996 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); |
4084 //%note jni_2 |
3997 //%note jni_2 |
4085 if (k->oop_is_instance()) { |
3998 if (k->oop_is_instance()) { |
4086 for (int index = 0; index < InstanceKlass::cast(k)->methods()->length(); index++) { |
3999 for (int index = 0; index < InstanceKlass::cast(k)->methods()->length(); index++) { |
4092 } |
4005 } |
4093 } |
4006 } |
4094 #ifndef USDT2 |
4007 #ifndef USDT2 |
4095 DTRACE_PROBE1(hotspot_jni, UnregisterNatives__return, 0); |
4008 DTRACE_PROBE1(hotspot_jni, UnregisterNatives__return, 0); |
4096 #else /* USDT2 */ |
4009 #else /* USDT2 */ |
4097 HOTSPOT_JNI_UNREGISTERNATIVES_RETURN( |
4010 HOTSPOT_JNI_UNREGISTERNATIVES_RETURN(0); |
4098 0); |
|
4099 #endif /* USDT2 */ |
4011 #endif /* USDT2 */ |
4100 return 0; |
4012 return 0; |
4101 JNI_END |
4013 JNI_END |
4102 |
4014 |
4103 // |
4015 // |
4113 |
4025 |
4114 JNI_ENTRY(jint, jni_MonitorEnter(JNIEnv *env, jobject jobj)) |
4026 JNI_ENTRY(jint, jni_MonitorEnter(JNIEnv *env, jobject jobj)) |
4115 #ifndef USDT2 |
4027 #ifndef USDT2 |
4116 DTRACE_PROBE2(hotspot_jni, MonitorEnter__entry, env, jobj); |
4028 DTRACE_PROBE2(hotspot_jni, MonitorEnter__entry, env, jobj); |
4117 #else /* USDT2 */ |
4029 #else /* USDT2 */ |
4118 HOTSPOT_JNI_MONITORENTER_ENTRY( |
4030 HOTSPOT_JNI_MONITORENTER_ENTRY(env, jobj); |
4119 env, jobj); |
|
4120 #endif /* USDT2 */ |
4031 #endif /* USDT2 */ |
4121 jint ret = JNI_ERR; |
4032 jint ret = JNI_ERR; |
4122 DT_RETURN_MARK(MonitorEnter, jint, (const jint&)ret); |
4033 DT_RETURN_MARK(MonitorEnter, jint, (const jint&)ret); |
4123 |
4034 |
4124 // If the object is null, we can't do anything with it |
4035 // If the object is null, we can't do anything with it |
4141 |
4052 |
4142 JNI_ENTRY(jint, jni_MonitorExit(JNIEnv *env, jobject jobj)) |
4053 JNI_ENTRY(jint, jni_MonitorExit(JNIEnv *env, jobject jobj)) |
4143 #ifndef USDT2 |
4054 #ifndef USDT2 |
4144 DTRACE_PROBE2(hotspot_jni, MonitorExit__entry, env, jobj); |
4055 DTRACE_PROBE2(hotspot_jni, MonitorExit__entry, env, jobj); |
4145 #else /* USDT2 */ |
4056 #else /* USDT2 */ |
4146 HOTSPOT_JNI_MONITOREXIT_ENTRY( |
4057 HOTSPOT_JNI_MONITOREXIT_ENTRY(env, jobj); |
4147 env, jobj); |
|
4148 #endif /* USDT2 */ |
4058 #endif /* USDT2 */ |
4149 jint ret = JNI_ERR; |
4059 jint ret = JNI_ERR; |
4150 DT_RETURN_MARK(MonitorExit, jint, (const jint&)ret); |
4060 DT_RETURN_MARK(MonitorExit, jint, (const jint&)ret); |
4151 |
4061 |
4152 // Don't do anything with a null object |
4062 // Don't do anything with a null object |
4175 JNI_ENTRY(void, jni_GetStringRegion(JNIEnv *env, jstring string, jsize start, jsize len, jchar *buf)) |
4085 JNI_ENTRY(void, jni_GetStringRegion(JNIEnv *env, jstring string, jsize start, jsize len, jchar *buf)) |
4176 JNIWrapper("GetStringRegion"); |
4086 JNIWrapper("GetStringRegion"); |
4177 #ifndef USDT2 |
4087 #ifndef USDT2 |
4178 DTRACE_PROBE5(hotspot_jni, GetStringRegion__entry, env, string, start, len, buf); |
4088 DTRACE_PROBE5(hotspot_jni, GetStringRegion__entry, env, string, start, len, buf); |
4179 #else /* USDT2 */ |
4089 #else /* USDT2 */ |
4180 HOTSPOT_JNI_GETSTRINGREGION_ENTRY( |
4090 HOTSPOT_JNI_GETSTRINGREGION_ENTRY(env, string, start, len, buf); |
4181 env, string, start, len, buf); |
|
4182 #endif /* USDT2 */ |
4091 #endif /* USDT2 */ |
4183 DT_VOID_RETURN_MARK(GetStringRegion); |
4092 DT_VOID_RETURN_MARK(GetStringRegion); |
4184 oop s = JNIHandles::resolve_non_null(string); |
4093 oop s = JNIHandles::resolve_non_null(string); |
4185 int s_len = java_lang_String::length(s); |
4094 int s_len = java_lang_String::length(s); |
4186 if (start < 0 || len < 0 || start + len > s_len) { |
4095 if (start < 0 || len < 0 || start + len > s_len) { |
4204 JNI_ENTRY(void, jni_GetStringUTFRegion(JNIEnv *env, jstring string, jsize start, jsize len, char *buf)) |
4113 JNI_ENTRY(void, jni_GetStringUTFRegion(JNIEnv *env, jstring string, jsize start, jsize len, char *buf)) |
4205 JNIWrapper("GetStringUTFRegion"); |
4114 JNIWrapper("GetStringUTFRegion"); |
4206 #ifndef USDT2 |
4115 #ifndef USDT2 |
4207 DTRACE_PROBE5(hotspot_jni, GetStringUTFRegion__entry, env, string, start, len, buf); |
4116 DTRACE_PROBE5(hotspot_jni, GetStringUTFRegion__entry, env, string, start, len, buf); |
4208 #else /* USDT2 */ |
4117 #else /* USDT2 */ |
4209 HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY( |
4118 HOTSPOT_JNI_GETSTRINGUTFREGION_ENTRY(env, string, start, len, buf); |
4210 env, string, start, len, buf); |
|
4211 #endif /* USDT2 */ |
4119 #endif /* USDT2 */ |
4212 DT_VOID_RETURN_MARK(GetStringUTFRegion); |
4120 DT_VOID_RETURN_MARK(GetStringUTFRegion); |
4213 oop s = JNIHandles::resolve_non_null(string); |
4121 oop s = JNIHandles::resolve_non_null(string); |
4214 int s_len = java_lang_String::length(s); |
4122 int s_len = java_lang_String::length(s); |
4215 if (start < 0 || len < 0 || start + len > s_len) { |
4123 if (start < 0 || len < 0 || start + len > s_len) { |
4235 JNI_ENTRY(void*, jni_GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboolean *isCopy)) |
4143 JNI_ENTRY(void*, jni_GetPrimitiveArrayCritical(JNIEnv *env, jarray array, jboolean *isCopy)) |
4236 JNIWrapper("GetPrimitiveArrayCritical"); |
4144 JNIWrapper("GetPrimitiveArrayCritical"); |
4237 #ifndef USDT2 |
4145 #ifndef USDT2 |
4238 DTRACE_PROBE3(hotspot_jni, GetPrimitiveArrayCritical__entry, env, array, isCopy); |
4146 DTRACE_PROBE3(hotspot_jni, GetPrimitiveArrayCritical__entry, env, array, isCopy); |
4239 #else /* USDT2 */ |
4147 #else /* USDT2 */ |
4240 HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_ENTRY( |
4148 HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_ENTRY(env, array, (uintptr_t *) isCopy); |
4241 env, array, (uintptr_t *) isCopy); |
|
4242 #endif /* USDT2 */ |
4149 #endif /* USDT2 */ |
4243 GC_locker::lock_critical(thread); |
4150 GC_locker::lock_critical(thread); |
4244 if (isCopy != NULL) { |
4151 if (isCopy != NULL) { |
4245 *isCopy = JNI_FALSE; |
4152 *isCopy = JNI_FALSE; |
4246 } |
4153 } |
4254 } |
4161 } |
4255 void* ret = arrayOop(a)->base(type); |
4162 void* ret = arrayOop(a)->base(type); |
4256 #ifndef USDT2 |
4163 #ifndef USDT2 |
4257 DTRACE_PROBE1(hotspot_jni, GetPrimitiveArrayCritical__return, ret); |
4164 DTRACE_PROBE1(hotspot_jni, GetPrimitiveArrayCritical__return, ret); |
4258 #else /* USDT2 */ |
4165 #else /* USDT2 */ |
4259 HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_RETURN( |
4166 HOTSPOT_JNI_GETPRIMITIVEARRAYCRITICAL_RETURN(ret); |
4260 ret); |
|
4261 #endif /* USDT2 */ |
4167 #endif /* USDT2 */ |
4262 return ret; |
4168 return ret; |
4263 JNI_END |
4169 JNI_END |
4264 |
4170 |
4265 |
4171 |
4266 JNI_ENTRY(void, jni_ReleasePrimitiveArrayCritical(JNIEnv *env, jarray array, void *carray, jint mode)) |
4172 JNI_ENTRY(void, jni_ReleasePrimitiveArrayCritical(JNIEnv *env, jarray array, void *carray, jint mode)) |
4267 JNIWrapper("ReleasePrimitiveArrayCritical"); |
4173 JNIWrapper("ReleasePrimitiveArrayCritical"); |
4268 #ifndef USDT2 |
4174 #ifndef USDT2 |
4269 DTRACE_PROBE4(hotspot_jni, ReleasePrimitiveArrayCritical__entry, env, array, carray, mode); |
4175 DTRACE_PROBE4(hotspot_jni, ReleasePrimitiveArrayCritical__entry, env, array, carray, mode); |
4270 #else /* USDT2 */ |
4176 #else /* USDT2 */ |
4271 HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_ENTRY( |
4177 HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_ENTRY(env, array, carray, mode); |
4272 env, array, carray, mode); |
|
4273 #endif /* USDT2 */ |
4178 #endif /* USDT2 */ |
4274 // The array, carray and mode arguments are ignored |
4179 // The array, carray and mode arguments are ignored |
4275 GC_locker::unlock_critical(thread); |
4180 GC_locker::unlock_critical(thread); |
4276 #ifndef USDT2 |
4181 #ifndef USDT2 |
4277 DTRACE_PROBE(hotspot_jni, ReleasePrimitiveArrayCritical__return); |
4182 DTRACE_PROBE(hotspot_jni, ReleasePrimitiveArrayCritical__return); |
4278 #else /* USDT2 */ |
4183 #else /* USDT2 */ |
4279 HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_RETURN( |
4184 HOTSPOT_JNI_RELEASEPRIMITIVEARRAYCRITICAL_RETURN(); |
4280 ); |
|
4281 #endif /* USDT2 */ |
4185 #endif /* USDT2 */ |
4282 JNI_END |
4186 JNI_END |
4283 |
4187 |
4284 |
4188 |
4285 JNI_ENTRY(const jchar*, jni_GetStringCritical(JNIEnv *env, jstring string, jboolean *isCopy)) |
4189 JNI_ENTRY(const jchar*, jni_GetStringCritical(JNIEnv *env, jstring string, jboolean *isCopy)) |
4286 JNIWrapper("GetStringCritical"); |
4190 JNIWrapper("GetStringCritical"); |
4287 #ifndef USDT2 |
4191 #ifndef USDT2 |
4288 DTRACE_PROBE3(hotspot_jni, GetStringCritical__entry, env, string, isCopy); |
4192 DTRACE_PROBE3(hotspot_jni, GetStringCritical__entry, env, string, isCopy); |
4289 #else /* USDT2 */ |
4193 #else /* USDT2 */ |
4290 HOTSPOT_JNI_GETSTRINGCRITICAL_ENTRY( |
4194 HOTSPOT_JNI_GETSTRINGCRITICAL_ENTRY(env, string, (uintptr_t *) isCopy); |
4291 env, string, (uintptr_t *) isCopy); |
|
4292 #endif /* USDT2 */ |
4195 #endif /* USDT2 */ |
4293 GC_locker::lock_critical(thread); |
4196 GC_locker::lock_critical(thread); |
4294 if (isCopy != NULL) { |
4197 if (isCopy != NULL) { |
4295 *isCopy = JNI_FALSE; |
4198 *isCopy = JNI_FALSE; |
4296 } |
4199 } |
4305 ret = (jchar*) s_value->base(T_CHAR); |
4208 ret = (jchar*) s_value->base(T_CHAR); |
4306 } |
4209 } |
4307 #ifndef USDT2 |
4210 #ifndef USDT2 |
4308 DTRACE_PROBE1(hotspot_jni, GetStringCritical__return, ret); |
4211 DTRACE_PROBE1(hotspot_jni, GetStringCritical__return, ret); |
4309 #else /* USDT2 */ |
4212 #else /* USDT2 */ |
4310 HOTSPOT_JNI_GETSTRINGCRITICAL_RETURN( |
4213 HOTSPOT_JNI_GETSTRINGCRITICAL_RETURN((uint16_t *) ret); |
4311 (uint16_t *) ret); |
|
4312 #endif /* USDT2 */ |
4214 #endif /* USDT2 */ |
4313 return ret; |
4215 return ret; |
4314 JNI_END |
4216 JNI_END |
4315 |
4217 |
4316 |
4218 |
4317 JNI_ENTRY(void, jni_ReleaseStringCritical(JNIEnv *env, jstring str, const jchar *chars)) |
4219 JNI_ENTRY(void, jni_ReleaseStringCritical(JNIEnv *env, jstring str, const jchar *chars)) |
4318 JNIWrapper("ReleaseStringCritical"); |
4220 JNIWrapper("ReleaseStringCritical"); |
4319 #ifndef USDT2 |
4221 #ifndef USDT2 |
4320 DTRACE_PROBE3(hotspot_jni, ReleaseStringCritical__entry, env, str, chars); |
4222 DTRACE_PROBE3(hotspot_jni, ReleaseStringCritical__entry, env, str, chars); |
4321 #else /* USDT2 */ |
4223 #else /* USDT2 */ |
4322 HOTSPOT_JNI_RELEASESTRINGCRITICAL_ENTRY( |
4224 HOTSPOT_JNI_RELEASESTRINGCRITICAL_ENTRY(env, str, (uint16_t *) chars); |
4323 env, str, (uint16_t *) chars); |
|
4324 #endif /* USDT2 */ |
4225 #endif /* USDT2 */ |
4325 // The str and chars arguments are ignored |
4226 // The str and chars arguments are ignored |
4326 GC_locker::unlock_critical(thread); |
4227 GC_locker::unlock_critical(thread); |
4327 #ifndef USDT2 |
4228 #ifndef USDT2 |
4328 DTRACE_PROBE(hotspot_jni, ReleaseStringCritical__return); |
4229 DTRACE_PROBE(hotspot_jni, ReleaseStringCritical__return); |
4329 #else /* USDT2 */ |
4230 #else /* USDT2 */ |
4330 HOTSPOT_JNI_RELEASESTRINGCRITICAL_RETURN( |
4231 HOTSPOT_JNI_RELEASESTRINGCRITICAL_RETURN(); |
4331 ); |
|
4332 #endif /* USDT2 */ |
4232 #endif /* USDT2 */ |
4333 JNI_END |
4233 JNI_END |
4334 |
4234 |
4335 |
4235 |
4336 JNI_ENTRY(jweak, jni_NewWeakGlobalRef(JNIEnv *env, jobject ref)) |
4236 JNI_ENTRY(jweak, jni_NewWeakGlobalRef(JNIEnv *env, jobject ref)) |
4337 JNIWrapper("jni_NewWeakGlobalRef"); |
4237 JNIWrapper("jni_NewWeakGlobalRef"); |
4338 #ifndef USDT2 |
4238 #ifndef USDT2 |
4339 DTRACE_PROBE2(hotspot_jni, NewWeakGlobalRef__entry, env, ref); |
4239 DTRACE_PROBE2(hotspot_jni, NewWeakGlobalRef__entry, env, ref); |
4340 #else /* USDT2 */ |
4240 #else /* USDT2 */ |
4341 HOTSPOT_JNI_NEWWEAKGLOBALREF_ENTRY( |
4241 HOTSPOT_JNI_NEWWEAKGLOBALREF_ENTRY(env, ref); |
4342 env, ref); |
|
4343 #endif /* USDT2 */ |
4242 #endif /* USDT2 */ |
4344 Handle ref_handle(thread, JNIHandles::resolve(ref)); |
4243 Handle ref_handle(thread, JNIHandles::resolve(ref)); |
4345 jweak ret = JNIHandles::make_weak_global(ref_handle); |
4244 jweak ret = JNIHandles::make_weak_global(ref_handle); |
4346 #ifndef USDT2 |
4245 #ifndef USDT2 |
4347 DTRACE_PROBE1(hotspot_jni, NewWeakGlobalRef__return, ret); |
4246 DTRACE_PROBE1(hotspot_jni, NewWeakGlobalRef__return, ret); |
4348 #else /* USDT2 */ |
4247 #else /* USDT2 */ |
4349 HOTSPOT_JNI_NEWWEAKGLOBALREF_RETURN( |
4248 HOTSPOT_JNI_NEWWEAKGLOBALREF_RETURN(ret); |
4350 ret); |
|
4351 #endif /* USDT2 */ |
4249 #endif /* USDT2 */ |
4352 return ret; |
4250 return ret; |
4353 JNI_END |
4251 JNI_END |
4354 |
4252 |
4355 // Must be JNI_ENTRY (with HandleMark) |
4253 // Must be JNI_ENTRY (with HandleMark) |
4356 JNI_ENTRY(void, jni_DeleteWeakGlobalRef(JNIEnv *env, jweak ref)) |
4254 JNI_ENTRY(void, jni_DeleteWeakGlobalRef(JNIEnv *env, jweak ref)) |
4357 JNIWrapper("jni_DeleteWeakGlobalRef"); |
4255 JNIWrapper("jni_DeleteWeakGlobalRef"); |
4358 #ifndef USDT2 |
4256 #ifndef USDT2 |
4359 DTRACE_PROBE2(hotspot_jni, DeleteWeakGlobalRef__entry, env, ref); |
4257 DTRACE_PROBE2(hotspot_jni, DeleteWeakGlobalRef__entry, env, ref); |
4360 #else /* USDT2 */ |
4258 #else /* USDT2 */ |
4361 HOTSPOT_JNI_DELETEWEAKGLOBALREF_ENTRY( |
4259 HOTSPOT_JNI_DELETEWEAKGLOBALREF_ENTRY(env, ref); |
4362 env, ref); |
|
4363 #endif /* USDT2 */ |
4260 #endif /* USDT2 */ |
4364 JNIHandles::destroy_weak_global(ref); |
4261 JNIHandles::destroy_weak_global(ref); |
4365 #ifndef USDT2 |
4262 #ifndef USDT2 |
4366 DTRACE_PROBE(hotspot_jni, DeleteWeakGlobalRef__return); |
4263 DTRACE_PROBE(hotspot_jni, DeleteWeakGlobalRef__return); |
4367 #else /* USDT2 */ |
4264 #else /* USDT2 */ |
4368 HOTSPOT_JNI_DELETEWEAKGLOBALREF_RETURN( |
4265 HOTSPOT_JNI_DELETEWEAKGLOBALREF_RETURN(); |
4369 ); |
|
4370 #endif /* USDT2 */ |
4266 #endif /* USDT2 */ |
4371 JNI_END |
4267 JNI_END |
4372 |
4268 |
4373 |
4269 |
4374 JNI_QUICK_ENTRY(jboolean, jni_ExceptionCheck(JNIEnv *env)) |
4270 JNI_QUICK_ENTRY(jboolean, jni_ExceptionCheck(JNIEnv *env)) |
4375 JNIWrapper("jni_ExceptionCheck"); |
4271 JNIWrapper("jni_ExceptionCheck"); |
4376 #ifndef USDT2 |
4272 #ifndef USDT2 |
4377 DTRACE_PROBE1(hotspot_jni, ExceptionCheck__entry, env); |
4273 DTRACE_PROBE1(hotspot_jni, ExceptionCheck__entry, env); |
4378 #else /* USDT2 */ |
4274 #else /* USDT2 */ |
4379 HOTSPOT_JNI_EXCEPTIONCHECK_ENTRY( |
4275 HOTSPOT_JNI_EXCEPTIONCHECK_ENTRY(env); |
4380 env); |
|
4381 #endif /* USDT2 */ |
4276 #endif /* USDT2 */ |
4382 jni_check_async_exceptions(thread); |
4277 jni_check_async_exceptions(thread); |
4383 jboolean ret = (thread->has_pending_exception()) ? JNI_TRUE : JNI_FALSE; |
4278 jboolean ret = (thread->has_pending_exception()) ? JNI_TRUE : JNI_FALSE; |
4384 #ifndef USDT2 |
4279 #ifndef USDT2 |
4385 DTRACE_PROBE1(hotspot_jni, ExceptionCheck__return, ret); |
4280 DTRACE_PROBE1(hotspot_jni, ExceptionCheck__return, ret); |
4386 #else /* USDT2 */ |
4281 #else /* USDT2 */ |
4387 HOTSPOT_JNI_EXCEPTIONCHECK_RETURN( |
4282 HOTSPOT_JNI_EXCEPTIONCHECK_RETURN(ret); |
4388 ret); |
|
4389 #endif /* USDT2 */ |
4283 #endif /* USDT2 */ |
4390 return ret; |
4284 return ret; |
4391 JNI_END |
4285 JNI_END |
4392 |
4286 |
4393 |
4287 |
4479 |
4373 |
4480 JNIWrapper("jni_NewDirectByteBuffer"); |
4374 JNIWrapper("jni_NewDirectByteBuffer"); |
4481 #ifndef USDT2 |
4375 #ifndef USDT2 |
4482 DTRACE_PROBE3(hotspot_jni, NewDirectByteBuffer__entry, env, address, capacity); |
4376 DTRACE_PROBE3(hotspot_jni, NewDirectByteBuffer__entry, env, address, capacity); |
4483 #else /* USDT2 */ |
4377 #else /* USDT2 */ |
4484 HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_ENTRY( |
4378 HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_ENTRY(env, address, capacity); |
4485 env, address, capacity); |
|
4486 #endif /* USDT2 */ |
4379 #endif /* USDT2 */ |
4487 |
4380 |
4488 if (!directBufferSupportInitializeEnded) { |
4381 if (!directBufferSupportInitializeEnded) { |
4489 if (!initializeDirectBufferSupport(env, thread)) { |
4382 if (!initializeDirectBufferSupport(env, thread)) { |
4490 #ifndef USDT2 |
4383 #ifndef USDT2 |
4491 DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, NULL); |
4384 DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, NULL); |
4492 #else /* USDT2 */ |
4385 #else /* USDT2 */ |
4493 HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN( |
4386 HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN(NULL); |
4494 NULL); |
|
4495 #endif /* USDT2 */ |
4387 #endif /* USDT2 */ |
4496 return NULL; |
4388 return NULL; |
4497 } |
4389 } |
4498 } |
4390 } |
4499 |
4391 |
4504 jint cap = (jint) capacity; |
4396 jint cap = (jint) capacity; |
4505 jobject ret = env->NewObject(directByteBufferClass, directByteBufferConstructor, addr, cap); |
4397 jobject ret = env->NewObject(directByteBufferClass, directByteBufferConstructor, addr, cap); |
4506 #ifndef USDT2 |
4398 #ifndef USDT2 |
4507 DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, ret); |
4399 DTRACE_PROBE1(hotspot_jni, NewDirectByteBuffer__return, ret); |
4508 #else /* USDT2 */ |
4400 #else /* USDT2 */ |
4509 HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN( |
4401 HOTSPOT_JNI_NEWDIRECTBYTEBUFFER_RETURN(ret); |
4510 ret); |
|
4511 #endif /* USDT2 */ |
4402 #endif /* USDT2 */ |
4512 return ret; |
4403 return ret; |
4513 } |
4404 } |
4514 |
4405 |
4515 #ifndef USDT2 |
4406 #ifndef USDT2 |
4526 |
4417 |
4527 JNIWrapper("jni_GetDirectBufferAddress"); |
4418 JNIWrapper("jni_GetDirectBufferAddress"); |
4528 #ifndef USDT2 |
4419 #ifndef USDT2 |
4529 DTRACE_PROBE2(hotspot_jni, GetDirectBufferAddress__entry, env, buf); |
4420 DTRACE_PROBE2(hotspot_jni, GetDirectBufferAddress__entry, env, buf); |
4530 #else /* USDT2 */ |
4421 #else /* USDT2 */ |
4531 HOTSPOT_JNI_GETDIRECTBUFFERADDRESS_ENTRY( |
4422 HOTSPOT_JNI_GETDIRECTBUFFERADDRESS_ENTRY(env, buf); |
4532 env, buf); |
|
4533 #endif /* USDT2 */ |
4423 #endif /* USDT2 */ |
4534 void* ret = NULL; |
4424 void* ret = NULL; |
4535 DT_RETURN_MARK(GetDirectBufferAddress, void*, (const void*&)ret); |
4425 DT_RETURN_MARK(GetDirectBufferAddress, void*, (const void*&)ret); |
4536 |
4426 |
4537 if (!directBufferSupportInitializeEnded) { |
4427 if (!directBufferSupportInitializeEnded) { |
4562 |
4452 |
4563 JNIWrapper("jni_GetDirectBufferCapacity"); |
4453 JNIWrapper("jni_GetDirectBufferCapacity"); |
4564 #ifndef USDT2 |
4454 #ifndef USDT2 |
4565 DTRACE_PROBE2(hotspot_jni, GetDirectBufferCapacity__entry, env, buf); |
4455 DTRACE_PROBE2(hotspot_jni, GetDirectBufferCapacity__entry, env, buf); |
4566 #else /* USDT2 */ |
4456 #else /* USDT2 */ |
4567 HOTSPOT_JNI_GETDIRECTBUFFERCAPACITY_ENTRY( |
4457 HOTSPOT_JNI_GETDIRECTBUFFERCAPACITY_ENTRY(env, buf); |
4568 env, buf); |
|
4569 #endif /* USDT2 */ |
4458 #endif /* USDT2 */ |
4570 jlong ret = -1; |
4459 jlong ret = -1; |
4571 DT_RETURN_MARK(GetDirectBufferCapacity, jlong, (const jlong&)ret); |
4460 DT_RETURN_MARK(GetDirectBufferCapacity, jlong, (const jlong&)ret); |
4572 |
4461 |
4573 if (!directBufferSupportInitializeEnded) { |
4462 if (!directBufferSupportInitializeEnded) { |
4594 JNI_LEAF(jint, jni_GetVersion(JNIEnv *env)) |
4483 JNI_LEAF(jint, jni_GetVersion(JNIEnv *env)) |
4595 JNIWrapper("GetVersion"); |
4484 JNIWrapper("GetVersion"); |
4596 #ifndef USDT2 |
4485 #ifndef USDT2 |
4597 DTRACE_PROBE1(hotspot_jni, GetVersion__entry, env); |
4486 DTRACE_PROBE1(hotspot_jni, GetVersion__entry, env); |
4598 #else /* USDT2 */ |
4487 #else /* USDT2 */ |
4599 HOTSPOT_JNI_GETVERSION_ENTRY( |
4488 HOTSPOT_JNI_GETVERSION_ENTRY(env); |
4600 env); |
|
4601 #endif /* USDT2 */ |
4489 #endif /* USDT2 */ |
4602 #ifndef USDT2 |
4490 #ifndef USDT2 |
4603 DTRACE_PROBE1(hotspot_jni, GetVersion__return, CurrentVersion); |
4491 DTRACE_PROBE1(hotspot_jni, GetVersion__return, CurrentVersion); |
4604 #else /* USDT2 */ |
4492 #else /* USDT2 */ |
4605 HOTSPOT_JNI_GETVERSION_RETURN( |
4493 HOTSPOT_JNI_GETVERSION_RETURN(CurrentVersion); |
4606 CurrentVersion); |
|
4607 #endif /* USDT2 */ |
4494 #endif /* USDT2 */ |
4608 return CurrentVersion; |
4495 return CurrentVersion; |
4609 JNI_END |
4496 JNI_END |
4610 |
4497 |
4611 extern struct JavaVM_ main_vm; |
4498 extern struct JavaVM_ main_vm; |
4613 JNI_LEAF(jint, jni_GetJavaVM(JNIEnv *env, JavaVM **vm)) |
4500 JNI_LEAF(jint, jni_GetJavaVM(JNIEnv *env, JavaVM **vm)) |
4614 JNIWrapper("jni_GetJavaVM"); |
4501 JNIWrapper("jni_GetJavaVM"); |
4615 #ifndef USDT2 |
4502 #ifndef USDT2 |
4616 DTRACE_PROBE2(hotspot_jni, GetJavaVM__entry, env, vm); |
4503 DTRACE_PROBE2(hotspot_jni, GetJavaVM__entry, env, vm); |
4617 #else /* USDT2 */ |
4504 #else /* USDT2 */ |
4618 HOTSPOT_JNI_GETJAVAVM_ENTRY( |
4505 HOTSPOT_JNI_GETJAVAVM_ENTRY(env, (void **) vm); |
4619 env, (void **) vm); |
|
4620 #endif /* USDT2 */ |
4506 #endif /* USDT2 */ |
4621 *vm = (JavaVM *)(&main_vm); |
4507 *vm = (JavaVM *)(&main_vm); |
4622 #ifndef USDT2 |
4508 #ifndef USDT2 |
4623 DTRACE_PROBE1(hotspot_jni, GetJavaVM__return, JNI_OK); |
4509 DTRACE_PROBE1(hotspot_jni, GetJavaVM__return, JNI_OK); |
4624 #else /* USDT2 */ |
4510 #else /* USDT2 */ |
4625 HOTSPOT_JNI_GETJAVAVM_RETURN( |
4511 HOTSPOT_JNI_GETJAVAVM_RETURN(JNI_OK); |
4626 JNI_OK); |
|
4627 #endif /* USDT2 */ |
4512 #endif /* USDT2 */ |
4628 return JNI_OK; |
4513 return JNI_OK; |
4629 JNI_END |
4514 JNI_END |
4630 |
4515 |
4631 // Structure containing all jni functions |
4516 // Structure containing all jni functions |
5012 |
4897 |
5013 _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetDefaultJavaVMInitArgs(void *args_) { |
4898 _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_GetDefaultJavaVMInitArgs(void *args_) { |
5014 #ifndef USDT2 |
4899 #ifndef USDT2 |
5015 HS_DTRACE_PROBE1(hotspot_jni, GetDefaultJavaVMInitArgs__entry, args_); |
4900 HS_DTRACE_PROBE1(hotspot_jni, GetDefaultJavaVMInitArgs__entry, args_); |
5016 #else /* USDT2 */ |
4901 #else /* USDT2 */ |
5017 HOTSPOT_JNI_GETDEFAULTJAVAVMINITARGS_ENTRY( |
4902 HOTSPOT_JNI_GETDEFAULTJAVAVMINITARGS_ENTRY(args_); |
5018 args_); |
|
5019 #endif /* USDT2 */ |
4903 #endif /* USDT2 */ |
5020 JDK1_1InitArgs *args = (JDK1_1InitArgs *)args_; |
4904 JDK1_1InitArgs *args = (JDK1_1InitArgs *)args_; |
5021 jint ret = JNI_ERR; |
4905 jint ret = JNI_ERR; |
5022 DT_RETURN_MARK(GetDefaultJavaVMInitArgs, jint, (const jint&)ret); |
4906 DT_RETURN_MARK(GetDefaultJavaVMInitArgs, jint, (const jint&)ret); |
5023 |
4907 |
5106 |
4990 |
5107 _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, void *args) { |
4991 _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_CreateJavaVM(JavaVM **vm, void **penv, void *args) { |
5108 #ifndef USDT2 |
4992 #ifndef USDT2 |
5109 HS_DTRACE_PROBE3(hotspot_jni, CreateJavaVM__entry, vm, penv, args); |
4993 HS_DTRACE_PROBE3(hotspot_jni, CreateJavaVM__entry, vm, penv, args); |
5110 #else /* USDT2 */ |
4994 #else /* USDT2 */ |
5111 HOTSPOT_JNI_CREATEJAVAVM_ENTRY( |
4995 HOTSPOT_JNI_CREATEJAVAVM_ENTRY((void **) vm, penv, args); |
5112 (void **) vm, penv, args); |
|
5113 #endif /* USDT2 */ |
4996 #endif /* USDT2 */ |
5114 |
4997 |
5115 jint result = JNI_ERR; |
4998 jint result = JNI_ERR; |
5116 DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result); |
4999 DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result); |
5117 |
5000 |
5229 // JNIWrapper("GetCreatedJavaVMs"); |
5112 // JNIWrapper("GetCreatedJavaVMs"); |
5230 #ifndef USDT2 |
5113 #ifndef USDT2 |
5231 HS_DTRACE_PROBE3(hotspot_jni, GetCreatedJavaVMs__entry, \ |
5114 HS_DTRACE_PROBE3(hotspot_jni, GetCreatedJavaVMs__entry, \ |
5232 vm_buf, bufLen, numVMs); |
5115 vm_buf, bufLen, numVMs); |
5233 #else /* USDT2 */ |
5116 #else /* USDT2 */ |
5234 HOTSPOT_JNI_GETCREATEDJAVAVMS_ENTRY( |
5117 HOTSPOT_JNI_GETCREATEDJAVAVMS_ENTRY((void **) vm_buf, bufLen, (uintptr_t *) numVMs); |
5235 (void **) vm_buf, bufLen, (uintptr_t *) numVMs); |
|
5236 #endif /* USDT2 */ |
5118 #endif /* USDT2 */ |
5237 if (vm_created) { |
5119 if (vm_created) { |
5238 if (numVMs != NULL) *numVMs = 1; |
5120 if (numVMs != NULL) *numVMs = 1; |
5239 if (bufLen > 0) *vm_buf = (JavaVM *)(&main_vm); |
5121 if (bufLen > 0) *vm_buf = (JavaVM *)(&main_vm); |
5240 } else { |
5122 } else { |
5241 if (numVMs != NULL) *numVMs = 0; |
5123 if (numVMs != NULL) *numVMs = 0; |
5242 } |
5124 } |
5243 #ifndef USDT2 |
5125 #ifndef USDT2 |
5244 HS_DTRACE_PROBE1(hotspot_jni, GetCreatedJavaVMs__return, JNI_OK); |
5126 HS_DTRACE_PROBE1(hotspot_jni, GetCreatedJavaVMs__return, JNI_OK); |
5245 #else /* USDT2 */ |
5127 #else /* USDT2 */ |
5246 HOTSPOT_JNI_GETCREATEDJAVAVMS_RETURN( |
5128 HOTSPOT_JNI_GETCREATEDJAVAVMS_RETURN(JNI_OK); |
5247 JNI_OK); |
|
5248 #endif /* USDT2 */ |
5129 #endif /* USDT2 */ |
5249 return JNI_OK; |
5130 return JNI_OK; |
5250 } |
5131 } |
5251 |
5132 |
5252 extern "C" { |
5133 extern "C" { |
5260 |
5141 |
5261 jint JNICALL jni_DestroyJavaVM(JavaVM *vm) { |
5142 jint JNICALL jni_DestroyJavaVM(JavaVM *vm) { |
5262 #ifndef USDT2 |
5143 #ifndef USDT2 |
5263 DTRACE_PROBE1(hotspot_jni, DestroyJavaVM__entry, vm); |
5144 DTRACE_PROBE1(hotspot_jni, DestroyJavaVM__entry, vm); |
5264 #else /* USDT2 */ |
5145 #else /* USDT2 */ |
5265 HOTSPOT_JNI_DESTROYJAVAVM_ENTRY( |
5146 HOTSPOT_JNI_DESTROYJAVAVM_ENTRY(vm); |
5266 vm); |
|
5267 #endif /* USDT2 */ |
5147 #endif /* USDT2 */ |
5268 jint res = JNI_ERR; |
5148 jint res = JNI_ERR; |
5269 DT_RETURN_MARK(DestroyJavaVM, jint, (const jint&)res); |
5149 DT_RETURN_MARK(DestroyJavaVM, jint, (const jint&)res); |
5270 |
5150 |
5271 if (!vm_created) { |
5151 if (!vm_created) { |
5417 |
5297 |
5418 jint JNICALL jni_AttachCurrentThread(JavaVM *vm, void **penv, void *_args) { |
5298 jint JNICALL jni_AttachCurrentThread(JavaVM *vm, void **penv, void *_args) { |
5419 #ifndef USDT2 |
5299 #ifndef USDT2 |
5420 DTRACE_PROBE3(hotspot_jni, AttachCurrentThread__entry, vm, penv, _args); |
5300 DTRACE_PROBE3(hotspot_jni, AttachCurrentThread__entry, vm, penv, _args); |
5421 #else /* USDT2 */ |
5301 #else /* USDT2 */ |
5422 HOTSPOT_JNI_ATTACHCURRENTTHREAD_ENTRY( |
5302 HOTSPOT_JNI_ATTACHCURRENTTHREAD_ENTRY(vm, penv, _args); |
5423 vm, penv, _args); |
|
5424 #endif /* USDT2 */ |
5303 #endif /* USDT2 */ |
5425 if (!vm_created) { |
5304 if (!vm_created) { |
5426 #ifndef USDT2 |
5305 #ifndef USDT2 |
5427 DTRACE_PROBE1(hotspot_jni, AttachCurrentThread__return, JNI_ERR); |
5306 DTRACE_PROBE1(hotspot_jni, AttachCurrentThread__return, JNI_ERR); |
5428 #else /* USDT2 */ |
5307 #else /* USDT2 */ |
5429 HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN( |
5308 HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN((uint32_t) JNI_ERR); |
5430 (uint32_t) JNI_ERR); |
|
5431 #endif /* USDT2 */ |
5309 #endif /* USDT2 */ |
5432 return JNI_ERR; |
5310 return JNI_ERR; |
5433 } |
5311 } |
5434 |
5312 |
5435 JNIWrapper("AttachCurrentThread"); |
5313 JNIWrapper("AttachCurrentThread"); |
5436 jint ret = attach_current_thread(vm, penv, _args, false); |
5314 jint ret = attach_current_thread(vm, penv, _args, false); |
5437 #ifndef USDT2 |
5315 #ifndef USDT2 |
5438 DTRACE_PROBE1(hotspot_jni, AttachCurrentThread__return, ret); |
5316 DTRACE_PROBE1(hotspot_jni, AttachCurrentThread__return, ret); |
5439 #else /* USDT2 */ |
5317 #else /* USDT2 */ |
5440 HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN( |
5318 HOTSPOT_JNI_ATTACHCURRENTTHREAD_RETURN(ret); |
5441 ret); |
|
5442 #endif /* USDT2 */ |
5319 #endif /* USDT2 */ |
5443 return ret; |
5320 return ret; |
5444 } |
5321 } |
5445 |
5322 |
5446 |
5323 |
5447 jint JNICALL jni_DetachCurrentThread(JavaVM *vm) { |
5324 jint JNICALL jni_DetachCurrentThread(JavaVM *vm) { |
5448 #ifndef USDT2 |
5325 #ifndef USDT2 |
5449 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__entry, vm); |
5326 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__entry, vm); |
5450 #else /* USDT2 */ |
5327 #else /* USDT2 */ |
5451 HOTSPOT_JNI_DETACHCURRENTTHREAD_ENTRY( |
5328 HOTSPOT_JNI_DETACHCURRENTTHREAD_ENTRY(vm); |
5452 vm); |
|
5453 #endif /* USDT2 */ |
5329 #endif /* USDT2 */ |
5454 VM_Exit::block_if_vm_exited(); |
5330 VM_Exit::block_if_vm_exited(); |
5455 |
5331 |
5456 JNIWrapper("DetachCurrentThread"); |
5332 JNIWrapper("DetachCurrentThread"); |
5457 |
5333 |
5458 // If the thread has been deattacted the operations is a no-op |
5334 // If the thread has been deattacted the operations is a no-op |
5459 if (ThreadLocalStorage::thread() == NULL) { |
5335 if (ThreadLocalStorage::thread() == NULL) { |
5460 #ifndef USDT2 |
5336 #ifndef USDT2 |
5461 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_OK); |
5337 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_OK); |
5462 #else /* USDT2 */ |
5338 #else /* USDT2 */ |
5463 HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN( |
5339 HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN(JNI_OK); |
5464 JNI_OK); |
|
5465 #endif /* USDT2 */ |
5340 #endif /* USDT2 */ |
5466 return JNI_OK; |
5341 return JNI_OK; |
5467 } |
5342 } |
5468 |
5343 |
5469 JavaThread* thread = JavaThread::current(); |
5344 JavaThread* thread = JavaThread::current(); |
5470 if (thread->has_last_Java_frame()) { |
5345 if (thread->has_last_Java_frame()) { |
5471 #ifndef USDT2 |
5346 #ifndef USDT2 |
5472 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_ERR); |
5347 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_ERR); |
5473 #else /* USDT2 */ |
5348 #else /* USDT2 */ |
5474 HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN( |
5349 HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN((uint32_t) JNI_ERR); |
5475 (uint32_t) JNI_ERR); |
|
5476 #endif /* USDT2 */ |
5350 #endif /* USDT2 */ |
5477 // Can't detach a thread that's running java, that can't work. |
5351 // Can't detach a thread that's running java, that can't work. |
5478 return JNI_ERR; |
5352 return JNI_ERR; |
5479 } |
5353 } |
5480 |
5354 |
5495 delete thread; |
5369 delete thread; |
5496 |
5370 |
5497 #ifndef USDT2 |
5371 #ifndef USDT2 |
5498 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_OK); |
5372 DTRACE_PROBE1(hotspot_jni, DetachCurrentThread__return, JNI_OK); |
5499 #else /* USDT2 */ |
5373 #else /* USDT2 */ |
5500 HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN( |
5374 HOTSPOT_JNI_DETACHCURRENTTHREAD_RETURN(JNI_OK); |
5501 JNI_OK); |
|
5502 #endif /* USDT2 */ |
5375 #endif /* USDT2 */ |
5503 return JNI_OK; |
5376 return JNI_OK; |
5504 } |
5377 } |
5505 |
5378 |
5506 #ifndef USDT2 |
5379 #ifndef USDT2 |
5512 |
5385 |
5513 jint JNICALL jni_GetEnv(JavaVM *vm, void **penv, jint version) { |
5386 jint JNICALL jni_GetEnv(JavaVM *vm, void **penv, jint version) { |
5514 #ifndef USDT2 |
5387 #ifndef USDT2 |
5515 DTRACE_PROBE3(hotspot_jni, GetEnv__entry, vm, penv, version); |
5388 DTRACE_PROBE3(hotspot_jni, GetEnv__entry, vm, penv, version); |
5516 #else /* USDT2 */ |
5389 #else /* USDT2 */ |
5517 HOTSPOT_JNI_GETENV_ENTRY( |
5390 HOTSPOT_JNI_GETENV_ENTRY(vm, penv, version); |
5518 vm, penv, version); |
|
5519 #endif /* USDT2 */ |
5391 #endif /* USDT2 */ |
5520 jint ret = JNI_ERR; |
5392 jint ret = JNI_ERR; |
5521 DT_RETURN_MARK(GetEnv, jint, (const jint&)ret); |
5393 DT_RETURN_MARK(GetEnv, jint, (const jint&)ret); |
5522 |
5394 |
5523 if (!vm_created) { |
5395 if (!vm_created) { |
5571 |
5443 |
5572 jint JNICALL jni_AttachCurrentThreadAsDaemon(JavaVM *vm, void **penv, void *_args) { |
5444 jint JNICALL jni_AttachCurrentThreadAsDaemon(JavaVM *vm, void **penv, void *_args) { |
5573 #ifndef USDT2 |
5445 #ifndef USDT2 |
5574 DTRACE_PROBE3(hotspot_jni, AttachCurrentThreadAsDaemon__entry, vm, penv, _args); |
5446 DTRACE_PROBE3(hotspot_jni, AttachCurrentThreadAsDaemon__entry, vm, penv, _args); |
5575 #else /* USDT2 */ |
5447 #else /* USDT2 */ |
5576 HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_ENTRY( |
5448 HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_ENTRY(vm, penv, _args); |
5577 vm, penv, _args); |
|
5578 #endif /* USDT2 */ |
5449 #endif /* USDT2 */ |
5579 if (!vm_created) { |
5450 if (!vm_created) { |
5580 #ifndef USDT2 |
5451 #ifndef USDT2 |
5581 DTRACE_PROBE1(hotspot_jni, AttachCurrentThreadAsDaemon__return, JNI_ERR); |
5452 DTRACE_PROBE1(hotspot_jni, AttachCurrentThreadAsDaemon__return, JNI_ERR); |
5582 #else /* USDT2 */ |
5453 #else /* USDT2 */ |
5583 HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN( |
5454 HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN((uint32_t) JNI_ERR); |
5584 (uint32_t) JNI_ERR); |
|
5585 #endif /* USDT2 */ |
5455 #endif /* USDT2 */ |
5586 return JNI_ERR; |
5456 return JNI_ERR; |
5587 } |
5457 } |
5588 |
5458 |
5589 JNIWrapper("AttachCurrentThreadAsDaemon"); |
5459 JNIWrapper("AttachCurrentThreadAsDaemon"); |
5590 jint ret = attach_current_thread(vm, penv, _args, true); |
5460 jint ret = attach_current_thread(vm, penv, _args, true); |
5591 #ifndef USDT2 |
5461 #ifndef USDT2 |
5592 DTRACE_PROBE1(hotspot_jni, AttachCurrentThreadAsDaemon__return, ret); |
5462 DTRACE_PROBE1(hotspot_jni, AttachCurrentThreadAsDaemon__return, ret); |
5593 #else /* USDT2 */ |
5463 #else /* USDT2 */ |
5594 HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN( |
5464 HOTSPOT_JNI_ATTACHCURRENTTHREADASDAEMON_RETURN(ret); |
5595 ret); |
|
5596 #endif /* USDT2 */ |
5465 #endif /* USDT2 */ |
5597 return ret; |
5466 return ret; |
5598 } |
5467 } |
5599 |
5468 |
5600 |
5469 |