summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2011-01-23 17:38:13 -0500
committerChong Yidong <cyd@stupidchicken.com>2011-01-23 17:38:13 -0500
commit19634648a609af92c97a084cd4d3ad3b10113c1d (patch)
treeea0d507cc5917a64af719318bd648438c62ae701
parent6de1218f3cbfabdb60446cffc5013962aa434de0 (diff)
downloademacs-19634648a609af92c97a084cd4d3ad3b10113c1d.tar.gz
* lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases (Bug#6811).
Remove unused HAVE_SHM branch.
-rw-r--r--src/ChangeLog6
-rw-r--r--src/lisp.h38
2 files changed, 20 insertions, 24 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 874a3bc5bcd..297ea12aee7 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,4 +1,10 @@
+2011-01-23 Chong Yidong <cyd@stupidchicken.com>
+
+ * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases.
+ Remove unused HAVE_SHM branch (Bug#6811).
+
2011-01-23 Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change)
+
* s/hpux11.h: Set CANNOT_DUMP on IA64 (Bug#6811).
2011-01-22 Martin Rudalics <rudalics@gmx.at>
diff --git a/src/lisp.h b/src/lisp.h
index 4f64425e913..34330b0e6c6 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -432,7 +432,13 @@ enum pvec_type
#define XSET(var, type, ptr) \
((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK))
+#ifdef DATA_SEG_BITS
+/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
+ which were stored in a Lisp_Object */
+#define XPNTR(a) ((EMACS_UINT) (((a) & VALMASK) | DATA_SEG_BITS))
+#else
#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK))
+#endif
#endif /* not USE_LSB_TAG */
@@ -482,6 +488,14 @@ enum pvec_type
# define XSET(var, vartype, ptr) \
(((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
+#ifdef DATA_SEG_BITS
+/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
+ which were stored in a Lisp_Object */
+#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
+#else
+#define XPNTR(a) ((EMACS_INT) XUINT (a))
+#endif
+
#endif /* !USE_LSB_TAG */
#if __GNUC__ >= 2 && defined (__OPTIMIZE__)
@@ -503,30 +517,6 @@ extern Lisp_Object make_number P_ ((EMACS_INT));
#define EQ(x, y) (XHASH (x) == XHASH (y))
-#ifndef XPNTR
-#ifdef HAVE_SHM
-/* In this representation, data is found in two widely separated segments. */
-extern size_t pure_size;
-#define XPNTR(a) \
- (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
-#else /* not HAVE_SHM */
-#ifdef DATA_SEG_BITS
-/* This case is used for the rt-pc.
- In the diffs I was given, it checked for ptr = 0
- and did not adjust it in that case.
- But I don't think that zero should ever be found
- in a Lisp object whose data type says it points to something. */
-#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
-#else
-/* Some versions of gcc seem to consider the bitfield width when
- issuing the "cast to pointer from integer of different size"
- warning, so the cast is here to widen the value back to its natural
- size. */
-#define XPNTR(a) ((EMACS_INT) XUINT (a))
-#endif
-#endif /* not HAVE_SHM */
-#endif /* no XPNTR */
-
/* Largest and smallest representable fixnum values. These are the C
values. */