607 // same purpose: Define yet another VM symbol. They could all be merged
608 // into a common 'do_symbol' call, but it seems useful to record our
609 // intentions here about kinds of symbols (class vs. name vs. signature).
610 //
611 // The F_xx is one of the Flags enum; see below.
612 //
613 // for Emacs: (let ((c-backslash-column 120) (c-backslash-max-column 120)) (c-backslash-region (point) (point-max) nil t))
614 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias) \
615 do_intrinsic(_hashCode, java_lang_Object, hashCode_name, void_int_signature, F_R) \
616 do_name( hashCode_name, "hashCode") \
617 do_intrinsic(_getClass, java_lang_Object, getClass_name, void_class_signature, F_R) \
618 do_name( getClass_name, "getClass") \
619 do_intrinsic(_clone, java_lang_Object, clone_name, void_object_signature, F_R) \
620 do_name( clone_name, "clone") \
621 \
622 /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */ \
623 do_class(java_lang_Math, "java/lang/Math") \
624 do_class(java_lang_StrictMath, "java/lang/StrictMath") \
625 do_signature(double2_double_signature, "(DD)D") \
626 do_signature(int2_int_signature, "(II)I") \
627 \
628 /* here are the math names, all together: */ \
629 do_name(abs_name,"abs") do_name(sin_name,"sin") do_name(cos_name,"cos") \
630 do_name(tan_name,"tan") do_name(atan2_name,"atan2") do_name(sqrt_name,"sqrt") \
631 do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \
632 do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \
633 \
634 do_name(addExact_name,"addExact") \
635 do_name(subtractExact_name,"subtractExact") \
636 do_name(multiplyExact_name,"multiplyExact") \
637 \
638 do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \
639 do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \
640 do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \
641 do_intrinsic(_dtan, java_lang_Math, tan_name, double_double_signature, F_S) \
642 do_intrinsic(_datan2, java_lang_Math, atan2_name, double2_double_signature, F_S) \
643 do_intrinsic(_dsqrt, java_lang_Math, sqrt_name, double_double_signature, F_S) \
644 do_intrinsic(_dlog, java_lang_Math, log_name, double_double_signature, F_S) \
645 do_intrinsic(_dlog10, java_lang_Math, log10_name, double_double_signature, F_S) \
646 do_intrinsic(_dpow, java_lang_Math, pow_name, double2_double_signature, F_S) \
647 do_intrinsic(_dexp, java_lang_Math, exp_name, double_double_signature, F_S) \
648 do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S) \
649 do_intrinsic(_max, java_lang_Math, max_name, int2_int_signature, F_S) \
650 do_intrinsic(_addExact, java_lang_Math, addExact_name, int2_int_signature, F_S) \
651 \
652 do_intrinsic(_floatToRawIntBits, java_lang_Float, floatToRawIntBits_name, float_int_signature, F_S) \
653 do_name( floatToRawIntBits_name, "floatToRawIntBits") \
654 do_intrinsic(_floatToIntBits, java_lang_Float, floatToIntBits_name, float_int_signature, F_S) \
655 do_name( floatToIntBits_name, "floatToIntBits") \
656 do_intrinsic(_intBitsToFloat, java_lang_Float, intBitsToFloat_name, int_float_signature, F_S) \
657 do_name( intBitsToFloat_name, "intBitsToFloat") \
658 do_intrinsic(_doubleToRawLongBits, java_lang_Double, doubleToRawLongBits_name, double_long_signature, F_S) \
659 do_name( doubleToRawLongBits_name, "doubleToRawLongBits") \
660 do_intrinsic(_doubleToLongBits, java_lang_Double, doubleToLongBits_name, double_long_signature, F_S) \
661 do_name( doubleToLongBits_name, "doubleToLongBits") \
662 do_intrinsic(_longBitsToDouble, java_lang_Double, longBitsToDouble_name, long_double_signature, F_S) \
663 do_name( longBitsToDouble_name, "longBitsToDouble") \
664 \
665 do_intrinsic(_numberOfLeadingZeros_i, java_lang_Integer, numberOfLeadingZeros_name,int_int_signature, F_S) \
666 do_intrinsic(_numberOfLeadingZeros_l, java_lang_Long, numberOfLeadingZeros_name,long_int_signature, F_S) \
667 \
668 do_intrinsic(_numberOfTrailingZeros_i, java_lang_Integer, numberOfTrailingZeros_name,int_int_signature, F_S) \
669 do_intrinsic(_numberOfTrailingZeros_l, java_lang_Long, numberOfTrailingZeros_name,long_int_signature, F_S) \
670 \
|
607 // same purpose: Define yet another VM symbol. They could all be merged
608 // into a common 'do_symbol' call, but it seems useful to record our
609 // intentions here about kinds of symbols (class vs. name vs. signature).
610 //
611 // The F_xx is one of the Flags enum; see below.
612 //
613 // for Emacs: (let ((c-backslash-column 120) (c-backslash-max-column 120)) (c-backslash-region (point) (point-max) nil t))
614 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias) \
615 do_intrinsic(_hashCode, java_lang_Object, hashCode_name, void_int_signature, F_R) \
616 do_name( hashCode_name, "hashCode") \
617 do_intrinsic(_getClass, java_lang_Object, getClass_name, void_class_signature, F_R) \
618 do_name( getClass_name, "getClass") \
619 do_intrinsic(_clone, java_lang_Object, clone_name, void_object_signature, F_R) \
620 do_name( clone_name, "clone") \
621 \
622 /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */ \
623 do_class(java_lang_Math, "java/lang/Math") \
624 do_class(java_lang_StrictMath, "java/lang/StrictMath") \
625 do_signature(double2_double_signature, "(DD)D") \
626 do_signature(int2_int_signature, "(II)I") \
627 do_signature(long2_long_signature, "(JJ)J") \
628 \
629 /* here are the math names, all together: */ \
630 do_name(abs_name,"abs") do_name(sin_name,"sin") do_name(cos_name,"cos") \
631 do_name(tan_name,"tan") do_name(atan2_name,"atan2") do_name(sqrt_name,"sqrt") \
632 do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \
633 do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \
634 \
635 do_name(addExact_name,"addExact") \
636 do_name(decrementExact_name,"decrementExact") \
637 do_name(incrementExact_name,"incrementExact") \
638 do_name(multiplyExact_name,"multiplyExact") \
639 do_name(negateExact_name,"negateExact") \
640 do_name(subtractExact_name,"subtractExact") \
641 \
642 do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \
643 do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \
644 do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \
645 do_intrinsic(_dtan, java_lang_Math, tan_name, double_double_signature, F_S) \
646 do_intrinsic(_datan2, java_lang_Math, atan2_name, double2_double_signature, F_S) \
647 do_intrinsic(_dsqrt, java_lang_Math, sqrt_name, double_double_signature, F_S) \
648 do_intrinsic(_dlog, java_lang_Math, log_name, double_double_signature, F_S) \
649 do_intrinsic(_dlog10, java_lang_Math, log10_name, double_double_signature, F_S) \
650 do_intrinsic(_dpow, java_lang_Math, pow_name, double2_double_signature, F_S) \
651 do_intrinsic(_dexp, java_lang_Math, exp_name, double_double_signature, F_S) \
652 do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S) \
653 do_intrinsic(_max, java_lang_Math, max_name, int2_int_signature, F_S) \
654 do_intrinsic(_addExact, java_lang_Math, addExact_name, int2_int_signature, F_S) \
655 do_intrinsic(_addExactL, java_lang_Math, addExact_name, long2_long_signature, F_S) \
656 do_intrinsic(_decrementExact, java_lang_Math, decrementExact_name, int_int_signature, F_S) \
657 do_intrinsic(_decrementExactL, java_lang_Math, decrementExact_name, long2_long_signature, F_S) \
658 do_intrinsic(_incrementExact, java_lang_Math, incrementExact_name, int_int_signature, F_S) \
659 do_intrinsic(_incrementExactL, java_lang_Math, incrementExact_name, long2_long_signature, F_S) \
660 do_intrinsic(_multiplyExact, java_lang_Math, multiplyExact_name, int2_int_signature, F_S) \
661 do_intrinsic(_multiplyExactL, java_lang_Math, multiplyExact_name, long2_long_signature, F_S) \
662 do_intrinsic(_negateExact, java_lang_Math, negateExact_name, int_int_signature, F_S) \
663 do_intrinsic(_negateExactL, java_lang_Math, negateExact_name, long_long_signature, F_S) \
664 do_intrinsic(_subtractExact, java_lang_Math, subtractExact_name, int2_int_signature, F_S) \
665 do_intrinsic(_subtractExactL, java_lang_Math, subtractExact_name, long2_long_signature, F_S) \
666 \
667 do_intrinsic(_floatToRawIntBits, java_lang_Float, floatToRawIntBits_name, float_int_signature, F_S) \
668 do_name( floatToRawIntBits_name, "floatToRawIntBits") \
669 do_intrinsic(_floatToIntBits, java_lang_Float, floatToIntBits_name, float_int_signature, F_S) \
670 do_name( floatToIntBits_name, "floatToIntBits") \
671 do_intrinsic(_intBitsToFloat, java_lang_Float, intBitsToFloat_name, int_float_signature, F_S) \
672 do_name( intBitsToFloat_name, "intBitsToFloat") \
673 do_intrinsic(_doubleToRawLongBits, java_lang_Double, doubleToRawLongBits_name, double_long_signature, F_S) \
674 do_name( doubleToRawLongBits_name, "doubleToRawLongBits") \
675 do_intrinsic(_doubleToLongBits, java_lang_Double, doubleToLongBits_name, double_long_signature, F_S) \
676 do_name( doubleToLongBits_name, "doubleToLongBits") \
677 do_intrinsic(_longBitsToDouble, java_lang_Double, longBitsToDouble_name, long_double_signature, F_S) \
678 do_name( longBitsToDouble_name, "longBitsToDouble") \
679 \
680 do_intrinsic(_numberOfLeadingZeros_i, java_lang_Integer, numberOfLeadingZeros_name,int_int_signature, F_S) \
681 do_intrinsic(_numberOfLeadingZeros_l, java_lang_Long, numberOfLeadingZeros_name,long_int_signature, F_S) \
682 \
683 do_intrinsic(_numberOfTrailingZeros_i, java_lang_Integer, numberOfTrailingZeros_name,int_int_signature, F_S) \
684 do_intrinsic(_numberOfTrailingZeros_l, java_lang_Long, numberOfTrailingZeros_name,long_int_signature, F_S) \
685 \
|