diff src/alloc.c @ 81798:3b39669cb653

(mark_maybe_pointer): Enforce mult-of-8 alignment when using USE_LSB_TAG. Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 10 Jul 2007 18:00:44 +0000
parents 1842d7137ff2
children a4517fcdd6e1
line wrap: on
line diff
--- a/src/alloc.c	Tue Jul 10 17:47:32 2007 +0000
+++ b/src/alloc.c	Tue Jul 10 18:00:44 2007 +0000
@@ -4263,9 +4263,14 @@
 {
   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);