Mercurial > hg > xemacs-beta
comparison src/data.c @ 1992:4529ff71e646
[xemacs-hg @ 2004-04-07 02:20:12 by james]
Fix --use-union-type breakage due to over-eager optimization.
author | james |
---|---|
date | Wed, 07 Apr 2004 02:20:14 +0000 |
parents | 9c872f33ecbe |
children | cb7f3be19e9f |
comparison
equal
deleted
inserted
replaced
1991:d956f0da8a5e | 1992:4529ff71e646 |
---|---|
1993 args[i] = wrong_type_argument (Qnumber_char_or_marker_p, args[i]); | 1993 args[i] = wrong_type_argument (Qnumber_char_or_marker_p, args[i]); |
1994 other = args[i]; | 1994 other = args[i]; |
1995 switch (promote_args (&result, &other)) | 1995 switch (promote_args (&result, &other)) |
1996 { | 1996 { |
1997 case FIXNUM_T: | 1997 case FIXNUM_T: |
1998 /* This looks evil, but it isn't. The bits identifying the objects | 1998 result = make_int (XREALINT (result), XREALINT (other)); |
1999 as fixnums will be present in both, so & will preserve them. | |
2000 The only bits possibly turned off are the actual data bits. */ | |
2001 result &= other; | |
2002 break; | 1999 break; |
2003 case BIGNUM_T: | 2000 case BIGNUM_T: |
2004 bignum_and (scratch_bignum, XBIGNUM_DATA (result), | 2001 bignum_and (scratch_bignum, XBIGNUM_DATA (result), |
2005 XBIGNUM_DATA (other)); | 2002 XBIGNUM_DATA (other)); |
2006 result = make_bignum_bg (scratch_bignum); | 2003 result = make_bignum_bg (scratch_bignum); |
2046 args[i] = wrong_type_argument (Qnumber_char_or_marker_p, args[i]); | 2043 args[i] = wrong_type_argument (Qnumber_char_or_marker_p, args[i]); |
2047 other = args[i]; | 2044 other = args[i]; |
2048 switch (promote_args (&result, &other)) | 2045 switch (promote_args (&result, &other)) |
2049 { | 2046 { |
2050 case FIXNUM_T: | 2047 case FIXNUM_T: |
2051 /* This looks evil, but it isn't. The bits identifying the objects | 2048 result = make_int (XREALINT (result) | XREALINT (other)); |
2052 as fixnums are the same in both, so | will preserve them. The | |
2053 only bits possibly turned on are the actual data bits. */ | |
2054 result |= other; | |
2055 break; | 2049 break; |
2056 case BIGNUM_T: | 2050 case BIGNUM_T: |
2057 bignum_ior (scratch_bignum, XBIGNUM_DATA (result), | 2051 bignum_ior (scratch_bignum, XBIGNUM_DATA (result), |
2058 XBIGNUM_DATA (other)); | 2052 XBIGNUM_DATA (other)); |
2059 result = make_bignum_bg (scratch_bignum); | 2053 result = make_bignum_bg (scratch_bignum); |