]> git.eshelyaron.com Git - emacs.git/commitdiff
(mark_maybe_pointer): Enforce mult-of-8 alignment when using
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 10 Jul 2007 18:00:44 +0000 (18:00 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 10 Jul 2007 18:00:44 +0000 (18:00 +0000)
USE_LSB_TAG.  Suggested by Dmitry Antipov <dmantipov@yandex.ru>.

src/ChangeLog
src/alloc.c

index e417ff9ee8673e9e55c8bdad9bd7290776c153da..ed9053e851af59cad067f1b9a2ce0a932aa1bc6b 100644 (file)
@@ -1,5 +1,8 @@
 2007-07-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * alloc.c (mark_maybe_pointer): Enforce mult-of-8 alignment when using
+       USE_LSB_TAG.  Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
+
        * fns.c (map_char_table): Use an array of int for `indices' rather than
        an array of Lisp_Objects (which are only ever integers anyway).
        (Fmap_char_table): Update caller.
index 7668309e59c7debdebf479f2ad8f2afc4f665554..f3140da1ddc82a4ef5739ed94c0ffeb5360d643d 100644 (file)
@@ -4263,9 +4263,14 @@ mark_maybe_pointer (p)
 {
   struct mem_node *m;
 
-  /* Quickly rule out some values which can't point to Lisp data.  We
-     assume that Lisp data is aligned on even addresses.  */
-  if ((EMACS_INT) p & 1)
+  /* Quickly rule out some values which can't point to Lisp data.  */
+  if ((EMACS_INT) p %
+#ifdef USE_LSB_TAG
+      8 /* USE_LSB_TAG needs Lisp data to be aligned on multiples of 8.  */
+#else
+      2 /* We assume that Lisp data is aligned on even addresses.  */
+#endif
+      )
     return;
 
   m = mem_find (p);