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);