Mercurial > hg > truffle
comparison src/share/vm/prims/jni.cpp @ 14278:a3ba776d6ab6
8030812: Change the solaris DTrace implementation to use USDT2 instead of USDT1
Reviewed-by: coleenp, sspitsyn, dsamersoff
author | sla |
---|---|
date | Thu, 16 Jan 2014 20:14:21 +0100 |
parents | dbcb1dd0785b |
children | d050fbf914d8 |
comparison
equal
deleted
inserted
replaced
14277:3bee68af0296 | 14278:a3ba776d6ab6 |
---|---|
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 |