# HG changeset patch # User james # Date 1082604242 0 # Node ID fd0cbe945410e0eb0f5a4b5e5eb9023ce0e35abe # Parent c6190a5b1ece5b6be791443f6d06ebad404236a2 [xemacs-hg @ 2004-04-22 03:24:00 by james] Change VALBITS to INT_VALBITS in a number of places. diff -r c6190a5b1ece -r fd0cbe945410 src/ChangeLog --- a/src/ChangeLog Wed Apr 21 21:50:35 2004 +0000 +++ b/src/ChangeLog Thu Apr 22 03:24:02 2004 +0000 @@ -1,3 +1,21 @@ +2004-04-19 Jerry James + + * data.c (sign_extend_lisp_int): Use INT_VALBITS instead of + VALBITS to compute the location of the sign bit. + * event-stream.c (Fcurrent_event_timestamp): Replace incorrect use + of VALBITS with EMACS_INT_MAX. + * events.c (Fevent_timestamp): Ditto. + * events.c (TIMESTAMP_HALFSPACE): Change VALBITS to INT_VALBITS to + compute the halfway point to timestamp wraparound. + * floatfns.c (float_to_int): Compare against EMACS_INT_MAX and + EMACS_INT_MIN instead of using VALBITS. + * floatfns.c (Flogb): Use EMACS_INT_MIN instead of building an + incorrect number with VALBITS. + * fns.c (Frandom): Use INT_VALBITS instead of VALBITS to compute + the denominator. + * sysdep.c (get_random): Use INT_VALBITS instead of VALBITS to + build random numbers. + 2004-04-18 Jerry James * dump-data.c (dumped_data_get): Change return type to char *. diff -r c6190a5b1ece -r fd0cbe945410 src/data.c --- a/src/data.c Wed Apr 21 21:50:35 2004 +0000 +++ b/src/data.c Thu Apr 22 03:24:02 2004 +0000 @@ -171,10 +171,10 @@ EMACS_INT sign_extend_lisp_int (EMACS_INT num) { - if (num & (1L << (VALBITS - 1))) - return num | ((-1L) << VALBITS); + if (num & (1L << (INT_VALBITS - 1))) + return num | ((-1L) << INT_VALBITS); else - return num & ((1L << VALBITS) - 1); + return num & (EMACS_INT) ((1UL << INT_VALBITS) - 1); } diff -r c6190a5b1ece -r fd0cbe945410 src/event-stream.c --- a/src/event-stream.c Wed Apr 21 21:50:35 2004 +0000 +++ b/src/event-stream.c Thu Apr 22 03:24:02 2004 +0000 @@ -4782,7 +4782,7 @@ /* This junk is so that timestamps don't get to be negative, but contain as many bits as this particular emacs will allow. */ - return make_int (((1L << (VALBITS - 1)) - 1) & tiempo); + return make_int (EMACS_INT_MAX & tiempo); } diff -r c6190a5b1ece -r fd0cbe945410 src/events.c --- a/src/events.c Wed Apr 21 21:50:35 2004 +0000 +++ b/src/events.c Thu Apr 22 03:24:02 2004 +0000 @@ -1744,11 +1744,10 @@ /* This junk is so that timestamps don't get to be negative, but contain as many bits as this particular emacs will allow. */ - return make_int (((1L << (VALBITS - 1)) - 1) & - XEVENT_TIMESTAMP (event)); + return make_int (EMACS_INT_MAX & XEVENT_TIMESTAMP (event)); } -#define TIMESTAMP_HALFSPACE (1L << (VALBITS - 2)) +#define TIMESTAMP_HALFSPACE (1L << (INT_VALBITS - 2)) DEFUN ("event-timestamp<", Fevent_timestamp_lessp, 2, 2, 0, /* Return true if timestamp TIME1 is earlier than timestamp TIME2. diff -r c6190a5b1ece -r fd0cbe945410 src/floatfns.c --- a/src/floatfns.c Wed Apr 21 21:50:35 2004 +0000 +++ b/src/floatfns.c Thu Apr 22 03:24:02 2004 +0000 @@ -128,15 +128,16 @@ bignum_set_double (scratch_bignum, x); return Fcanonicalize_number (make_bignum_bg (scratch_bignum)); #else - if (x >= ((EMACS_INT) 1 << (VALBITS-1)) - || x <= - ((EMACS_INT) 1 << (VALBITS-1)) - (EMACS_INT) 1) - { - if (!UNBOUNDP (num2)) - range_error2 (name, num, num2); - else - range_error (name, num); - } - return (make_int ((EMACS_INT) x)); + REGISTER EMACS_INT result = (EMACS_INT) x; + + if (result > EMACS_INT_MAX || result < EMACS_INT_MIN) + { + if (!UNBOUNDP (num2)) + range_error2 (name, num, num2); + else + range_error (name, num); + } + return make_int (result); #endif /* HAVE_BIGNUM */ } @@ -798,7 +799,7 @@ double f = extract_float (number); if (f == 0.0) - return make_int (- (EMACS_INT)(((EMACS_UINT) 1) << (VALBITS - 1))); /* most-negative-fixnum */ + return make_int (EMACS_INT_MIN); #ifdef HAVE_LOGB { Lisp_Object val; diff -r c6190a5b1ece -r fd0cbe945410 src/fns.c --- a/src/fns.c Wed Apr 21 21:50:35 2004 +0000 +++ b/src/fns.c Thu Apr 22 03:24:02 2004 +0000 @@ -170,7 +170,7 @@ it's possible to get a quotient larger than limit; discarding these values eliminates the bias that would otherwise appear when using a large limit. */ - denominator = ((unsigned long)1 << VALBITS) / XINT (limit); + denominator = ((unsigned long)1 << INT_VALBITS) / XINT (limit); do val = get_random () / denominator; while (val >= XINT (limit)); diff -r c6190a5b1ece -r fd0cbe945410 src/sysdep.c --- a/src/sysdep.c Wed Apr 21 21:50:35 2004 +0000 +++ b/src/sysdep.c Thu Apr 22 03:24:02 2004 +0000 @@ -3648,19 +3648,19 @@ get_random (void) { long val = random (); -#if VALBITS > RAND_BITS +#if INT_VALBITS > RAND_BITS val = (val << RAND_BITS) ^ random (); -#if VALBITS > 2*RAND_BITS +#if INT_VALBITS > 2*RAND_BITS val = (val << RAND_BITS) ^ random (); -#if VALBITS > 3*RAND_BITS +#if INT_VALBITS > 3*RAND_BITS val = (val << RAND_BITS) ^ random (); -#if VALBITS > 4*RAND_BITS +#if INT_VALBITS > 4*RAND_BITS val = (val << RAND_BITS) ^ random (); #endif /* need at least 5 */ #endif /* need at least 4 */ #endif /* need at least 3 */ #endif /* need at least 2 */ - return val & ((1L << VALBITS) - 1); + return val & (EMACS_INT) ((1UL << INT_VALBITS) - 1); }