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