summaryrefslogtreecommitdiff
path: root/src/alloc.c
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2007-07-10 18:00:44 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2007-07-10 18:00:44 +0000
commit5045e68e7015710cc94ee6cbbd8bc81bad67d625 (patch)
treeac13e72020f4c412efcacdb836b2f162fc905a34 /src/alloc.c
parent7dcef48dd27e6d41b1d9cfab9d33160a15f4fe55 (diff)
downloademacs-5045e68e7015710cc94ee6cbbd8bc81bad67d625.tar.gz
(mark_maybe_pointer): Enforce mult-of-8 alignment when using
USE_LSB_TAG. Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 7668309e59c..f3140da1ddc 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -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);