From 6e5cb96f3d905d69ef7cf2c09df3e51b2db06d9b Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Fri, 11 Jul 2008 02:30:26 +0000 Subject: [PATCH] * lisp.h: * w32heap.c: * emacs.c: * alloc.c: Replace all references of NO_UNION_TYPE with USE_LISP_UNION_TYPE. * m/xtensa.h (NO_UNION_TYPE): * m/vax.h (NO_UNION_TYPE): * m/template.h (NO_UNION_TYPE): * m/sparc.h (NO_UNION_TYPE): * m/mips.h (NO_UNION_TYPE): * m/macppc.h (NO_UNION_TYPE): * m/m68k.h (NO_UNION_TYPE): * m/iris4d.h (NO_UNION_TYPE): * m/intel386.h (NO_UNION_TYPE): * m/ibms390x.h (NO_UNION_TYPE): * m/ibms390.h (NO_UNION_TYPE): * m/ibmrs6000.h (NO_UNION_TYPE): * m/ia64.h (NO_UNION_TYPE): * m/hp800.h (NO_UNION_TYPE): * m/arm.h (NO_UNION_TYPE): * m/amdx86-64.h (NO_UNION_TYPE): * m/alpha.h (NO_UNION_TYPE): Remove definition, all platform were defining it the same. --- admin/CPP-DEFINES | 2 +- etc/PROBLEMS | 8 ++++---- src/ChangeLog | 27 +++++++++++++++++++++++++++ src/alloc.c | 2 +- src/emacs.c | 2 +- src/lisp.h | 18 +++++++++--------- src/m/alpha.h | 6 +----- src/m/amdx86-64.h | 7 +------ src/m/arm.h | 2 -- src/m/hp800.h | 7 +------ src/m/ia64.h | 7 +------ src/m/ibmrs6000.h | 5 ----- src/m/ibms390.h | 7 +------ src/m/ibms390x.h | 12 +----------- src/m/intel386.h | 4 ---- src/m/iris4d.h | 7 +------ src/m/m68k.h | 7 +------ src/m/macppc.h | 5 ----- src/m/mips.h | 7 +------ src/m/sparc.h | 7 ++----- src/m/template.h | 7 +------ src/m/vax.h | 4 ---- src/m/xtensa.h | 1 - src/w32heap.c | 2 +- 24 files changed, 56 insertions(+), 107 deletions(-) diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES index 0af13230d9..32c13f26f1 100644 --- a/admin/CPP-DEFINES +++ b/admin/CPP-DEFINES @@ -18,6 +18,7 @@ WINDOWSNT Compiling the native MS-Windows (W32) port. __MINGW32__ Compiling the W32 port with the MinGW port of GCC. _MSC_VER Compiling the W32 port with the Microsoft C compiler. IRIX6_5 Compiling on Irix-6.5 +USE_LISP_UNION_TYPE Define it in lisp.h to make Lisp_Object be a union type instead of the default int. ** Distinguishing GUIs ** @@ -281,7 +282,6 @@ NO_SHARED_LIBS NO_SIOCTL_H NO_SOCK_SIGIO NO_TERMIO -NO_UNION_TYPE NSIG NSIG_MINIMUM NULL diff --git a/etc/PROBLEMS b/etc/PROBLEMS index ec96b19f2b..207ea33470 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -3757,8 +3757,8 @@ If the code is incorrect, your compiler has this problem. In the XCONS, etc., macros in lisp.h you must replace (a).u.val with ((a).u.val + coercedummy) where coercedummy is declared as int. -This problem will not happen if the m-...h file for your type -of machine defines NO_UNION_TYPE. That is the recommended setting now. +This problem will only happen if USE_LISP_UNION_TYPE is manually +defined in lisp.h. *** C compilers lose on returning unions. @@ -3766,8 +3766,8 @@ I hear that some C compilers cannot handle returning a union type. Most of the functions in GNU Emacs return type Lisp_Object, which is defined as a union on some rare architectures. -This problem will not happen if the m-...h file for your type -of machine defines NO_UNION_TYPE. +This problem will only happen if USE_LISP_UNION_TYPE is manually +defined in lisp.h. This file is part of GNU Emacs. diff --git a/src/ChangeLog b/src/ChangeLog index 282bb8f272..283f8d9ef5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,30 @@ +2008-07-11 Dan Nicolaescu + + * lisp.h: + * w32heap.c: + * emacs.c: + * alloc.c: Replace all references of NO_UNION_TYPE with + USE_LISP_UNION_TYPE. + + * m/xtensa.h (NO_UNION_TYPE): + * m/vax.h (NO_UNION_TYPE): + * m/template.h (NO_UNION_TYPE): + * m/sparc.h (NO_UNION_TYPE): + * m/mips.h (NO_UNION_TYPE): + * m/macppc.h (NO_UNION_TYPE): + * m/m68k.h (NO_UNION_TYPE): + * m/iris4d.h (NO_UNION_TYPE): + * m/intel386.h (NO_UNION_TYPE): + * m/ibms390x.h (NO_UNION_TYPE): + * m/ibms390.h (NO_UNION_TYPE): + * m/ibmrs6000.h (NO_UNION_TYPE): + * m/ia64.h (NO_UNION_TYPE): + * m/hp800.h (NO_UNION_TYPE): + * m/arm.h (NO_UNION_TYPE): + * m/amdx86-64.h (NO_UNION_TYPE): + * m/alpha.h (NO_UNION_TYPE): Remove definition, all platform were + defining it the same. + 2008-07-10 Chong Yidong * xdisp.c (move_it_to): Backtrack if past the edge of a wrapped diff --git a/src/alloc.c b/src/alloc.c index b942e7a6e0..ac28a32164 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -1541,7 +1541,7 @@ mark_interval_tree (tree) } while (0) -/* Number support. If NO_UNION_TYPE isn't in effect, we +/* Number support. If USE_LISP_UNION_TYPE is in effect, we can't create number objects in macros. */ #ifndef make_number Lisp_Object diff --git a/src/emacs.c b/src/emacs.c index b27e787e7e..8dfdf9062a 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -98,7 +98,7 @@ int gdb_use_lsb = 1; #else int gdb_use_lsb = 0; #endif -#ifdef NO_UNION_TYPE +#ifndef USE_LISP_UNION_TYPE int gdb_use_union = 0; #else int gdb_use_union = 1; diff --git a/src/lisp.h b/src/lisp.h index c4216b74dc..25a5729237 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -129,8 +129,8 @@ extern void die P_((const char *, const char *, int)) NO_RETURN; /***** Select the tagging scheme. *****/ /* There are basically two options that control the tagging scheme: - - NO_UNION_TYPE says that Lisp_Object should be an integer instead - of a union. + - USE_LISP_UNION_TYPE says that Lisp_Object should be a union instead + of an integer. - USE_LSB_TAG means that we can assume the least 3 bits of pointers are always 0, and we can thus use them to hold tag bits, without restricting our addressing space. @@ -163,7 +163,7 @@ extern void die P_((const char *, const char *, int)) NO_RETURN; /* We also need to be able to specify mult-of-8 alignment on static vars. */ # if defined DECL_ALIGN /* We currently do not support USE_LSB_TAG with a union Lisp_Object. */ -# if defined NO_UNION_TYPE +# if defined USE_LISP_UNION_TYPE # define USE_LSB_TAG # endif # endif @@ -246,7 +246,7 @@ enum Lisp_Misc_Type #define VALBITS (BITS_PER_EMACS_INT - GCTYPEBITS) #endif -#ifndef NO_UNION_TYPE +#ifdef USE_LISP_UNION_TYPE #ifndef WORDS_BIG_ENDIAN @@ -310,13 +310,13 @@ LISP_MAKE_RVALUE (Lisp_Object o) #define LISP_MAKE_RVALUE(o) (o) #endif -#else /* NO_UNION_TYPE */ +#else /* USE_LISP_UNION_TYPE */ /* If union type is not wanted, define Lisp_Object as just a number. */ typedef EMACS_INT Lisp_Object; #define LISP_MAKE_RVALUE(o) (0+(o)) -#endif /* NO_UNION_TYPE */ +#endif /* USE_LISP_UNION_TYPE */ /* In the size word of a vector, this bit means the vector has been marked. */ @@ -374,7 +374,7 @@ enum pvec_type For example, if tem is a Lisp_Object whose type is Lisp_Cons, XCONS (tem) is the struct Lisp_Cons * pointing to the memory for that cons. */ -#ifdef NO_UNION_TYPE +#ifndef USE_LISP_UNION_TYPE /* Return a perfect hash of the Lisp_Object representation. */ #define XHASH(a) (a) @@ -440,7 +440,7 @@ enum pvec_type #endif /* not USE_LSB_TAG */ -#else /* not NO_UNION_TYPE */ +#else /* USE_LISP_UNION_TYPE */ #define XHASH(a) ((a).i) @@ -472,7 +472,7 @@ enum pvec_type extern Lisp_Object make_number P_ ((EMACS_INT)); #endif -#endif /* NO_UNION_TYPE */ +#endif /* USE_LISP_UNION_TYPE */ #define EQ(x, y) (XHASH (x) == XHASH (y)) diff --git a/src/m/alpha.h b/src/m/alpha.h index 84641bf306..f1bd6e4b60 100644 --- a/src/m/alpha.h +++ b/src/m/alpha.h @@ -51,15 +51,11 @@ NOTE-END /* __alpha defined automatically */ -/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/amdx86-64.h b/src/m/amdx86-64.h index 20e09adc59..34800af8e9 100644 --- a/src/m/amdx86-64.h +++ b/src/m/amdx86-64.h @@ -49,11 +49,6 @@ along with GNU Emacs. If not, see . */ orion, tahoe, APOLLO and many others */ /* __x86_64 defined automatically. */ -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define the type to use. */ #define EMACS_INT long #define EMACS_UINT unsigned long @@ -63,7 +58,7 @@ along with GNU Emacs. If not, see . */ the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/arm.h b/src/m/arm.h index d87d461d8f..3b79879574 100644 --- a/src/m/arm.h +++ b/src/m/arm.h @@ -39,8 +39,6 @@ along with GNU Emacs. If not, see . */ #define SIGN_EXTEND_CHAR(c) (((int)(c) << 24) >> 24) -#define NO_UNION_TYPE - #define NO_REMAP /* arch-tag: 07856f0c-f0c8-4bd8-99af-0b7fa1e5ee42 diff --git a/src/m/hp800.h b/src/m/hp800.h index 1476907703..717265d568 100644 --- a/src/m/hp800.h +++ b/src/m/hp800.h @@ -32,16 +32,11 @@ along with GNU Emacs. If not, see . */ #define NO_ARG_ARRAY -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/ia64.h b/src/m/ia64.h index 2b11fa7854..960228afe4 100644 --- a/src/m/ia64.h +++ b/src/m/ia64.h @@ -39,11 +39,6 @@ along with GNU Emacs. If not, see . */ /* __ia64__ defined automatically */ -/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define the type to use. */ #define EMACS_INT long #define EMACS_UINT unsigned long @@ -53,7 +48,7 @@ along with GNU Emacs. If not, see . */ the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/ibmrs6000.h b/src/m/ibmrs6000.h index 40c74688f9..35f464caa2 100644 --- a/src/m/ibmrs6000.h +++ b/src/m/ibmrs6000.h @@ -41,11 +41,6 @@ along with GNU Emacs. If not, see . */ #define IBMR2AIX -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define CANNOT_DUMP on machines where unexec does not work. Then the function dump-emacs will not be defined and temacs will do (load "loadup") automatically unless told otherwise. */ diff --git a/src/m/ibms390.h b/src/m/ibms390.h index 15081b0cfa..f605ed35e7 100644 --- a/src/m/ibms390.h +++ b/src/m/ibms390.h @@ -32,16 +32,11 @@ along with GNU Emacs. If not, see . */ #define NO_ARG_ARRAY -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/ibms390x.h b/src/m/ibms390x.h index a3afd23f59..31efa03f48 100644 --- a/src/m/ibms390x.h +++ b/src/m/ibms390x.h @@ -45,16 +45,6 @@ NOTE-END */ #define NO_ARG_ARRAY -/* Now define a symbol for the cpu type, if your compiler - does not define it automatically: - Ones defined so far include vax, m68000, ns16000, pyramid, - orion, tahoe, APOLLO and many others */ - -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define the type to use. */ #define EMACS_INT long #define EMACS_UINT unsigned long @@ -64,7 +54,7 @@ NOTE-END */ the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #undef EXPLICIT_SIGN_EXTEND diff --git a/src/m/intel386.h b/src/m/intel386.h index 540760cd57..9353283c0b 100644 --- a/src/m/intel386.h +++ b/src/m/intel386.h @@ -57,10 +57,6 @@ NOTE-END */ /* #define NO_ARG_ARRAY */ -/* Use type int rather than a union, to represent Lisp_Object */ - -#define NO_UNION_TYPE - /* crt0.c, if it is used, should use the i386-bsd style of entry. with no extra dummy args. On USG and XENIX, NO_REMAP says this isn't used. */ diff --git a/src/m/iris4d.h b/src/m/iris4d.h index f6fd3f245d..e1d14e6910 100644 --- a/src/m/iris4d.h +++ b/src/m/iris4d.h @@ -41,16 +41,11 @@ along with GNU Emacs. If not, see . */ #define IRIS_4D #endif -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/m68k.h b/src/m/m68k.h index a62c879518..50c8a8e757 100644 --- a/src/m/m68k.h +++ b/src/m/m68k.h @@ -39,16 +39,11 @@ along with GNU Emacs. If not, see . */ #define m68k #endif -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/macppc.h b/src/m/macppc.h index eb263526c2..c0e53c2e06 100644 --- a/src/m/macppc.h +++ b/src/m/macppc.h @@ -32,11 +32,6 @@ along with GNU Emacs. If not, see . */ Ones defined so far include vax, m68000, ns16000, pyramid, orion, tahoe, APOLLO and many others */ -/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Data type of load average, as read out of kmem. */ #define LOAD_AVE_TYPE long diff --git a/src/m/mips.h b/src/m/mips.h index 7b9d658639..b446508b9a 100644 --- a/src/m/mips.h +++ b/src/m/mips.h @@ -52,16 +52,11 @@ NOTE-END */ # define mips #endif -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/sparc.h b/src/m/sparc.h index 233bf96d7c..e75094fa7d 100644 --- a/src/m/sparc.h +++ b/src/m/sparc.h @@ -38,11 +38,8 @@ NOTE-END */ /* __sparc__ is defined by the compiler by default. */ -/* Use type int rather than a union, to represent Lisp_Object */ - -#define NO_UNION_TYPE - -/* XINT must explicitly sign-extend */ +/* XINT must explicitly sign-extend + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/template.h b/src/m/template.h index e447fba7b4..4b11f87c8a 100644 --- a/src/m/template.h +++ b/src/m/template.h @@ -36,16 +36,11 @@ along with GNU Emacs. If not, see . */ does not define it automatically. Ones defined so far include m68k and many others */ -/* Use type int rather than a union, to represent Lisp_Object */ -/* This is desirable for most machines. */ - -#define NO_UNION_TYPE - /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend the 24-bit bit field into an int. In other words, if bit fields are always unsigned. - If you use NO_UNION_TYPE, this flag does not matter. */ + This flag only matters if you use USE_LISP_UNION_TYPE. */ #define EXPLICIT_SIGN_EXTEND diff --git a/src/m/vax.h b/src/m/vax.h index 35050a11e1..7a08deb683 100644 --- a/src/m/vax.h +++ b/src/m/vax.h @@ -57,10 +57,6 @@ NOTE-END */ /* #define vax -- appears to be done automatically */ -/* Use type int rather than a union, to represent Lisp_Object */ - -#define NO_UNION_TYPE - /* crt0.c should use the vax-bsd style of entry, with no dummy args. */ #define CRT0_DUMMIES diff --git a/src/m/xtensa.h b/src/m/xtensa.h index 049874635d..d53686d940 100644 --- a/src/m/xtensa.h +++ b/src/m/xtensa.h @@ -3,7 +3,6 @@ Add a license notice if this grows to > 10 lines of code. */ #define NO_ARG_ARRAY -#define NO_UNION_TYPE #ifdef __LITTLE_ENDIAN #undef WORDS_BIG_ENDIAN diff --git a/src/w32heap.c b/src/w32heap.c index 099024e52c..4298e6f70a 100644 --- a/src/w32heap.c +++ b/src/w32heap.c @@ -240,7 +240,7 @@ init_heap () exit (1); } -#if defined (NO_UNION_TYPE) && !defined (USE_LSB_TAG) +#if !defined (USE_LISP_UNION_TYPE) && !defined (USE_LSB_TAG) /* Ensure that the addresses don't use the upper tag bits since the Lisp type goes there. */ if (((unsigned long) data_region_base & ~VALMASK) != 0) -- 2.39.2