aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Nicolaescu <[email protected]>2008-07-11 02:30:26 +0000
committerDan Nicolaescu <[email protected]>2008-07-11 02:30:26 +0000
commit6e5cb96f3d905d69ef7cf2c09df3e51b2db06d9b (patch)
tree3c7960f6dd3096573828f31642b72e903fa8c976
parentf4f745d94326e5082acb071953b7c2d713421a2f (diff)
* 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.
-rw-r--r--admin/CPP-DEFINES2
-rw-r--r--etc/PROBLEMS8
-rw-r--r--src/ChangeLog27
-rw-r--r--src/alloc.c2
-rw-r--r--src/emacs.c2
-rw-r--r--src/lisp.h18
-rw-r--r--src/m/alpha.h6
-rw-r--r--src/m/amdx86-64.h7
-rw-r--r--src/m/arm.h2
-rw-r--r--src/m/hp800.h7
-rw-r--r--src/m/ia64.h7
-rw-r--r--src/m/ibmrs6000.h5
-rw-r--r--src/m/ibms390.h7
-rw-r--r--src/m/ibms390x.h12
-rw-r--r--src/m/intel386.h4
-rw-r--r--src/m/iris4d.h7
-rw-r--r--src/m/m68k.h7
-rw-r--r--src/m/macppc.h5
-rw-r--r--src/m/mips.h7
-rw-r--r--src/m/sparc.h7
-rw-r--r--src/m/template.h7
-rw-r--r--src/m/vax.h4
-rw-r--r--src/m/xtensa.h1
-rw-r--r--src/w32heap.c2
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 <[email protected]>
+
+ * 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 <[email protected]>
* 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 <http://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
/* __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 <http://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
#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 <http://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
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)