emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-23 r100408: * lisp.h (XPNTR): Obey DA


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-23 r100408: * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases (Bug#6811).
Date: Sun, 23 Jan 2011 17:38:13 -0500
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 100408
committer: Chong Yidong <address@hidden>
branch nick: emacs-23
timestamp: Sun 2011-01-23 17:38:13 -0500
message:
  * lisp.h (XPNTR): Obey DATA_SEG_BITS in all non-USE_LSB_TAG cases (Bug#6811).
  Remove unused HAVE_SHM branch.
modified:
  src/ChangeLog
  src/lisp.h
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-01-23 22:00:22 +0000
+++ b/src/ChangeLog     2011-01-23 22:38:13 +0000
@@ -1,4 +1,10 @@
+2011-01-23  Chong Yidong  <address@hidden>
+
+       * 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  <address@hidden>  (tiny change)
+
        * s/hpux11.h: Set CANNOT_DUMP on IA64 (Bug#6811).
 
 2011-01-22  Martin Rudalics  <address@hidden>

=== modified file 'src/lisp.h'
--- a/src/lisp.h        2011-01-02 23:50:46 +0000
+++ b/src/lisp.h        2011-01-23 22:38:13 +0000
@@ -432,7 +432,13 @@
 #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 @@
 # 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 @@
 
 #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.  */
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]