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