738 // annotate the method in the source code. The list below contains all 739 // library intrinsics followed by bytecode intrinsics. Please also make sure to 740 // add the declaration of the intrinsic to the approriate section of the list. 741 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias) \ 742 /* (1) Library intrinsics */ \ 743 do_intrinsic(_hashCode, java_lang_Object, hashCode_name, void_int_signature, F_R) \ 744 do_name( hashCode_name, "hashCode") \ 745 do_intrinsic(_getClass, java_lang_Object, getClass_name, void_class_signature, F_R) \ 746 do_name( getClass_name, "getClass") \ 747 do_intrinsic(_clone, java_lang_Object, clone_name, void_object_signature, F_R) \ 748 do_name( clone_name, "clone") \ 749 do_intrinsic(_notify, java_lang_Object, notify_name, void_method_signature, F_R) \ 750 do_name( notify_name, "notify") \ 751 do_intrinsic(_notifyAll, java_lang_Object, notifyAll_name, void_method_signature, F_R) \ 752 do_name( notifyAll_name, "notifyAll") \ 753 \ 754 /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */ \ 755 do_class(java_lang_Math, "java/lang/Math") \ 756 do_class(java_lang_StrictMath, "java/lang/StrictMath") \ 757 do_signature(double2_double_signature, "(DD)D") \ 758 do_signature(int2_int_signature, "(II)I") \ 759 do_signature(long2_long_signature, "(JJ)J") \ 760 \ 761 /* here are the math names, all together: */ \ 762 do_name(abs_name,"abs") do_name(sin_name,"sin") do_name(cos_name,"cos") \ 763 do_name(tan_name,"tan") do_name(atan2_name,"atan2") do_name(sqrt_name,"sqrt") \ 764 do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \ 765 do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \ 766 \ 767 do_name(addExact_name,"addExact") \ 768 do_name(decrementExact_name,"decrementExact") \ 769 do_name(incrementExact_name,"incrementExact") \ 770 do_name(multiplyExact_name,"multiplyExact") \ 771 do_name(negateExact_name,"negateExact") \ 772 do_name(subtractExact_name,"subtractExact") \ 773 \ 774 do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \ 775 do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \ 776 do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \ 777 do_intrinsic(_dtan, java_lang_Math, tan_name, double_double_signature, F_S) \ 778 do_intrinsic(_datan2, java_lang_Math, atan2_name, double2_double_signature, F_S) \ 779 do_intrinsic(_dsqrt, java_lang_Math, sqrt_name, double_double_signature, F_S) \ 780 do_intrinsic(_dlog, java_lang_Math, log_name, double_double_signature, F_S) \ 781 do_intrinsic(_dlog10, java_lang_Math, log10_name, double_double_signature, F_S) \ 782 do_intrinsic(_dpow, java_lang_Math, pow_name, double2_double_signature, F_S) \ 783 do_intrinsic(_dexp, java_lang_Math, exp_name, double_double_signature, F_S) \ 784 do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S) \ 785 do_intrinsic(_max, java_lang_Math, max_name, int2_int_signature, F_S) \ 786 do_intrinsic(_addExactI, java_lang_Math, addExact_name, int2_int_signature, F_S) \ 787 do_intrinsic(_addExactL, java_lang_Math, addExact_name, long2_long_signature, F_S) \ 788 do_intrinsic(_decrementExactI, java_lang_Math, decrementExact_name, int_int_signature, F_S) \ 789 do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long_long_signature, F_S) \ 790 do_intrinsic(_incrementExactI, java_lang_Math, incrementExact_name, int_int_signature, F_S) \ 791 do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long_long_signature, F_S) \ 792 do_intrinsic(_multiplyExactI, java_lang_Math, multiplyExact_name, int2_int_signature, F_S) \ 793 do_intrinsic(_multiplyExactL, java_lang_Math, multiplyExact_name, long2_long_signature, F_S) \ 794 do_intrinsic(_negateExactI, java_lang_Math, negateExact_name, int_int_signature, F_S) \ 795 do_intrinsic(_negateExactL, java_lang_Math, negateExact_name, long_long_signature, F_S) \ 796 do_intrinsic(_subtractExactI, java_lang_Math, subtractExact_name, int2_int_signature, F_S) \ 797 do_intrinsic(_subtractExactL, java_lang_Math, subtractExact_name, long2_long_signature, F_S) \ 798 \ 799 do_intrinsic(_floatToRawIntBits, java_lang_Float, floatToRawIntBits_name, float_int_signature, F_S) \ 800 do_name( floatToRawIntBits_name, "floatToRawIntBits") \ 801 do_intrinsic(_floatToIntBits, java_lang_Float, floatToIntBits_name, float_int_signature, F_S) \ 802 do_name( floatToIntBits_name, "floatToIntBits") \ 803 do_intrinsic(_intBitsToFloat, java_lang_Float, intBitsToFloat_name, int_float_signature, F_S) \ 804 do_name( intBitsToFloat_name, "intBitsToFloat") \ 805 do_intrinsic(_doubleToRawLongBits, java_lang_Double, doubleToRawLongBits_name, double_long_signature, F_S) \ 806 do_name( doubleToRawLongBits_name, "doubleToRawLongBits") \ 807 do_intrinsic(_doubleToLongBits, java_lang_Double, doubleToLongBits_name, double_long_signature, F_S) \ 808 do_name( doubleToLongBits_name, "doubleToLongBits") \ 809 do_intrinsic(_longBitsToDouble, java_lang_Double, longBitsToDouble_name, long_double_signature, F_S) \ 810 do_name( longBitsToDouble_name, "longBitsToDouble") \ 811 \ 812 do_intrinsic(_numberOfLeadingZeros_i, java_lang_Integer, numberOfLeadingZeros_name,int_int_signature, F_S) \ 813 do_intrinsic(_numberOfLeadingZeros_l, java_lang_Long, numberOfLeadingZeros_name,long_int_signature, F_S) \ 814 \ 815 do_intrinsic(_numberOfTrailingZeros_i, java_lang_Integer, numberOfTrailingZeros_name,int_int_signature, F_S) \ 816 do_intrinsic(_numberOfTrailingZeros_l, java_lang_Long, numberOfTrailingZeros_name,long_int_signature, F_S) \ 817 \ | 738 // annotate the method in the source code. The list below contains all 739 // library intrinsics followed by bytecode intrinsics. Please also make sure to 740 // add the declaration of the intrinsic to the approriate section of the list. 741 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias) \ 742 /* (1) Library intrinsics */ \ 743 do_intrinsic(_hashCode, java_lang_Object, hashCode_name, void_int_signature, F_R) \ 744 do_name( hashCode_name, "hashCode") \ 745 do_intrinsic(_getClass, java_lang_Object, getClass_name, void_class_signature, F_R) \ 746 do_name( getClass_name, "getClass") \ 747 do_intrinsic(_clone, java_lang_Object, clone_name, void_object_signature, F_R) \ 748 do_name( clone_name, "clone") \ 749 do_intrinsic(_notify, java_lang_Object, notify_name, void_method_signature, F_R) \ 750 do_name( notify_name, "notify") \ 751 do_intrinsic(_notifyAll, java_lang_Object, notifyAll_name, void_method_signature, F_R) \ 752 do_name( notifyAll_name, "notifyAll") \ 753 \ 754 /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */ \ 755 do_class(java_lang_Math, "java/lang/Math") \ 756 do_class(java_lang_StrictMath, "java/lang/StrictMath") \ 757 do_signature(double2_double_signature, "(DD)D") \ 758 do_signature(double3_double_signature, "(DDD)D") \ 759 do_signature(float3_float_signature, "(FFF)F") \ 760 do_signature(int2_int_signature, "(II)I") \ 761 do_signature(long2_long_signature, "(JJ)J") \ 762 \ 763 /* here are the math names, all together: */ \ 764 do_name(abs_name,"abs") do_name(sin_name,"sin") do_name(cos_name,"cos") \ 765 do_name(tan_name,"tan") do_name(atan2_name,"atan2") do_name(sqrt_name,"sqrt") \ 766 do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \ 767 do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \ 768 \ 769 do_name(addExact_name,"addExact") \ 770 do_name(decrementExact_name,"decrementExact") \ 771 do_name(incrementExact_name,"incrementExact") \ 772 do_name(multiplyExact_name,"multiplyExact") \ 773 do_name(negateExact_name,"negateExact") \ 774 do_name(subtractExact_name,"subtractExact") \ 775 do_name(fma_name, "fma") \ 776 \ 777 do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \ 778 do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \ 779 do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \ 780 do_intrinsic(_dtan, java_lang_Math, tan_name, double_double_signature, F_S) \ 781 do_intrinsic(_datan2, java_lang_Math, atan2_name, double2_double_signature, F_S) \ 782 do_intrinsic(_dsqrt, java_lang_Math, sqrt_name, double_double_signature, F_S) \ 783 do_intrinsic(_dlog, java_lang_Math, log_name, double_double_signature, F_S) \ 784 do_intrinsic(_dlog10, java_lang_Math, log10_name, double_double_signature, F_S) \ 785 do_intrinsic(_dpow, java_lang_Math, pow_name, double2_double_signature, F_S) \ 786 do_intrinsic(_dexp, java_lang_Math, exp_name, double_double_signature, F_S) \ 787 do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S) \ 788 do_intrinsic(_max, java_lang_Math, max_name, int2_int_signature, F_S) \ 789 do_intrinsic(_addExactI, java_lang_Math, addExact_name, int2_int_signature, F_S) \ 790 do_intrinsic(_addExactL, java_lang_Math, addExact_name, long2_long_signature, F_S) \ 791 do_intrinsic(_decrementExactI, java_lang_Math, decrementExact_name, int_int_signature, F_S) \ 792 do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long_long_signature, F_S) \ 793 do_intrinsic(_incrementExactI, java_lang_Math, incrementExact_name, int_int_signature, F_S) \ 794 do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long_long_signature, F_S) \ 795 do_intrinsic(_multiplyExactI, java_lang_Math, multiplyExact_name, int2_int_signature, F_S) \ 796 do_intrinsic(_multiplyExactL, java_lang_Math, multiplyExact_name, long2_long_signature, F_S) \ 797 do_intrinsic(_negateExactI, java_lang_Math, negateExact_name, int_int_signature, F_S) \ 798 do_intrinsic(_negateExactL, java_lang_Math, negateExact_name, long_long_signature, F_S) \ 799 do_intrinsic(_subtractExactI, java_lang_Math, subtractExact_name, int2_int_signature, F_S) \ 800 do_intrinsic(_subtractExactL, java_lang_Math, subtractExact_name, long2_long_signature, F_S) \ 801 do_intrinsic(_fmaD, java_lang_Math, fma_name, double3_double_signature, F_S) \ 802 do_intrinsic(_fmaF, java_lang_Math, fma_name, float3_float_signature, F_S) \ 803 \ 804 do_intrinsic(_floatToRawIntBits, java_lang_Float, floatToRawIntBits_name, float_int_signature, F_S) \ 805 do_name( floatToRawIntBits_name, "floatToRawIntBits") \ 806 do_intrinsic(_floatToIntBits, java_lang_Float, floatToIntBits_name, float_int_signature, F_S) \ 807 do_name( floatToIntBits_name, "floatToIntBits") \ 808 do_intrinsic(_intBitsToFloat, java_lang_Float, intBitsToFloat_name, int_float_signature, F_S) \ 809 do_name( intBitsToFloat_name, "intBitsToFloat") \ 810 do_intrinsic(_doubleToRawLongBits, java_lang_Double, doubleToRawLongBits_name, double_long_signature, F_S) \ 811 do_name( doubleToRawLongBits_name, "doubleToRawLongBits") \ 812 do_intrinsic(_doubleToLongBits, java_lang_Double, doubleToLongBits_name, double_long_signature, F_S) \ 813 do_name( doubleToLongBits_name, "doubleToLongBits") \ 814 do_intrinsic(_longBitsToDouble, java_lang_Double, longBitsToDouble_name, long_double_signature, F_S) \ 815 do_name( longBitsToDouble_name, "longBitsToDouble") \ 816 \ 817 do_intrinsic(_numberOfLeadingZeros_i, java_lang_Integer, numberOfLeadingZeros_name,int_int_signature, F_S) \ 818 do_intrinsic(_numberOfLeadingZeros_l, java_lang_Long, numberOfLeadingZeros_name,long_int_signature, F_S) \ 819 \ 820 do_intrinsic(_numberOfTrailingZeros_i, java_lang_Integer, numberOfTrailingZeros_name,int_int_signature, F_S) \ 821 do_intrinsic(_numberOfTrailingZeros_l, java_lang_Long, numberOfTrailingZeros_name,long_int_signature, F_S) \ 822 \ |