* 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:
parent
6de1218f3c
commit
19634648a6
2 changed files with 20 additions and 24 deletions
|
@ -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>
|
||||
|
|
38
src/lisp.h
38
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. */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue