aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChong Yidong2011-01-23 17:38:13 -0500
committerChong Yidong2011-01-23 17:38:13 -0500
commit19634648a609af92c97a084cd4d3ad3b10113c1d (patch)
treeea0d507cc5917a64af719318bd648438c62ae701 /src
parent6de1218f3cbfabdb60446cffc5013962aa434de0 (diff)
downloademacs-19634648a609af92c97a084cd4d3ad3b10113c1d.tar.gz
emacs-19634648a609af92c97a084cd4d3ad3b10113c1d.zip
* lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases (Bug#6811).
Remove unused HAVE_SHM branch.
Diffstat (limited to 'src')
-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 @@
12011-01-23 Chong Yidong <cyd@stupidchicken.com>
2
3 * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases.
4 Remove unused HAVE_SHM branch (Bug#6811).
5
12011-01-23 Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change) 62011-01-23 Peter O'Gorman <bug-gnu-emacs@mlists.thewrittenword.com> (tiny change)
7
2 * s/hpux11.h: Set CANNOT_DUMP on IA64 (Bug#6811). 8 * s/hpux11.h: Set CANNOT_DUMP on IA64 (Bug#6811).
3 9
42011-01-22 Martin Rudalics <rudalics@gmx.at> 102011-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
432#define XSET(var, type, ptr) \ 432#define XSET(var, type, ptr) \
433 ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK)) 433 ((var) = ((EMACS_INT)(type) << VALBITS) + ((EMACS_INT) (ptr) & VALMASK))
434 434
435#ifdef DATA_SEG_BITS
436/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
437 which were stored in a Lisp_Object */
438#define XPNTR(a) ((EMACS_UINT) (((a) & VALMASK) | DATA_SEG_BITS))
439#else
435#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK)) 440#define XPNTR(a) ((EMACS_UINT) ((a) & VALMASK))
441#endif
436 442
437#endif /* not USE_LSB_TAG */ 443#endif /* not USE_LSB_TAG */
438 444
@@ -482,6 +488,14 @@ enum pvec_type
482# define XSET(var, vartype, ptr) \ 488# define XSET(var, vartype, ptr) \
483 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype)))) 489 (((var).s.val = ((EMACS_INT) (ptr))), ((var).s.type = ((char) (vartype))))
484 490
491#ifdef DATA_SEG_BITS
492/* DATA_SEG_BITS forces extra bits to be or'd in with any pointers
493 which were stored in a Lisp_Object */
494#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
495#else
496#define XPNTR(a) ((EMACS_INT) XUINT (a))
497#endif
498
485#endif /* !USE_LSB_TAG */ 499#endif /* !USE_LSB_TAG */
486 500
487#if __GNUC__ >= 2 && defined (__OPTIMIZE__) 501#if __GNUC__ >= 2 && defined (__OPTIMIZE__)
@@ -503,30 +517,6 @@ extern Lisp_Object make_number P_ ((EMACS_INT));
503 517
504#define EQ(x, y) (XHASH (x) == XHASH (y)) 518#define EQ(x, y) (XHASH (x) == XHASH (y))
505 519
506#ifndef XPNTR
507#ifdef HAVE_SHM
508/* In this representation, data is found in two widely separated segments. */
509extern size_t pure_size;
510#define XPNTR(a) \
511 (XUINT (a) | (XUINT (a) > pure_size ? DATA_SEG_BITS : PURE_SEG_BITS))
512#else /* not HAVE_SHM */
513#ifdef DATA_SEG_BITS
514/* This case is used for the rt-pc.
515 In the diffs I was given, it checked for ptr = 0
516 and did not adjust it in that case.
517 But I don't think that zero should ever be found
518 in a Lisp object whose data type says it points to something. */
519#define XPNTR(a) (XUINT (a) | DATA_SEG_BITS)
520#else
521/* Some versions of gcc seem to consider the bitfield width when
522 issuing the "cast to pointer from integer of different size"
523 warning, so the cast is here to widen the value back to its natural
524 size. */
525#define XPNTR(a) ((EMACS_INT) XUINT (a))
526#endif
527#endif /* not HAVE_SHM */
528#endif /* no XPNTR */
529
530/* Largest and smallest representable fixnum values. These are the C 520/* Largest and smallest representable fixnum values. These are the C
531 values. */ 521 values. */
532 522