diff options
author | dgp <dgp@users.sourceforge.net> | 2009-10-29 18:38:08 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2009-10-29 18:38:08 (GMT) |
commit | a0ea6b9acaf35b4c2dd743bf83c74bc0209efff1 (patch) | |
tree | 186a850c3e229b0af21621a603420bce35797d5c /generic/tcl.h | |
parent | 4c88e5710e2844b84cd5893e41bc3d369c37d65c (diff) | |
download | tcl-a0ea6b9acaf35b4c2dd743bf83c74bc0209efff1.zip tcl-a0ea6b9acaf35b4c2dd743bf83c74bc0209efff1.tar.gz tcl-a0ea6b9acaf35b4c2dd743bf83c74bc0209efff1.tar.bz2 |
* generic/tcl.h: Changed the typedef for the mp_digit type
from:
typedef unsigned long mp_digit;
to:
typedef unsigned int mp_digit;
For 32-bit builds where "long" and "int" are two names for the same
thing, this is no change at all. For 64-bit builds, though, this
causes the dp[] array of an mp_int to be made up of 32-bit elements
instead of 64-bit elements. This is a huge improvement because details
elsewhere in the mp_int implementation cause only 28 bits of each
element to be actually used storing number data. Without this change
bignums are over 50% wasted space on 64-bit systems. [Bug 2800740].
***POTENTIAL INCOMPATIBILITY***
For 64-bit builds, callers of routines with (mp_digit) or (mp_digit *)
arguments *will*, and callers of routines with (mp_int *) arguments
*may* suffer both binary and stubs incompatibilities with Tcl releases
8.5.0 - 8.5.7. Such possibilities should be checked, and if such
incompatibilities are present, suitable [package require] requirements
on the Tcl release should be put in place to keep such built code
[load]-ing only in Tcl interps that are compatible.
Diffstat (limited to 'generic/tcl.h')
-rw-r--r-- | generic/tcl.h | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/generic/tcl.h b/generic/tcl.h index a57d683..756015d 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tcl.h,v 1.291 2009/04/29 15:24:20 patthoyts Exp $ + * RCS: @(#) $Id: tcl.h,v 1.292 2009/10/29 18:38:08 dgp Exp $ */ #ifndef _TCL @@ -2186,14 +2186,10 @@ typedef struct Tcl_Config { typedef void (Tcl_LimitHandlerProc) (ClientData clientData, Tcl_Interp *interp); typedef void (Tcl_LimitHandlerDeleteProc) (ClientData clientData); -#ifndef MP_INT_DECLARED typedef struct mp_int mp_int; #define MP_INT_DECLARED -#endif -#ifndef MP_DIGIT_DECLARED -typedef unsigned long mp_digit; +typedef unsigned int mp_digit; #define MP_DIGIT_DECLARED -#endif /* *---------------------------------------------------------------------------- |