* lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases (Bug#6811).

Remove unused HAVE_SHM branch.
This commit is contained in:
Chong Yidong 2011-01-23 17:38:13 -05:00
parent 6de1218f3c
commit 19634648a6
2 changed files with 20 additions and 24 deletions

View file

@ -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>

View file

@ -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. */