diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-07-10 18:00:44 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-07-10 18:00:44 +0000 |
commit | 5045e68e7015710cc94ee6cbbd8bc81bad67d625 (patch) | |
tree | ac13e72020f4c412efcacdb836b2f162fc905a34 /src/alloc.c | |
parent | 7dcef48dd27e6d41b1d9cfab9d33160a15f4fe55 (diff) | |
download | emacs-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.c | 11 |
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); |