aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStefan Monnier2007-07-10 18:00:44 +0000
committerStefan Monnier2007-07-10 18:00:44 +0000
commit5045e68e7015710cc94ee6cbbd8bc81bad67d625 (patch)
treeac13e72020f4c412efcacdb836b2f162fc905a34 /src
parent7dcef48dd27e6d41b1d9cfab9d33160a15f4fe55 (diff)
downloademacs-5045e68e7015710cc94ee6cbbd8bc81bad67d625.tar.gz
emacs-5045e68e7015710cc94ee6cbbd8bc81bad67d625.zip
(mark_maybe_pointer): Enforce mult-of-8 alignment when using
USE_LSB_TAG. Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog3
-rw-r--r--src/alloc.c11
2 files changed, 11 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e417ff9ee86..ed9053e851a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
12007-07-10 Stefan Monnier <monnier@iro.umontreal.ca> 12007-07-10 Stefan Monnier <monnier@iro.umontreal.ca>
2 2
3 * alloc.c (mark_maybe_pointer): Enforce mult-of-8 alignment when using
4 USE_LSB_TAG. Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
5
3 * fns.c (map_char_table): Use an array of int for `indices' rather than 6 * fns.c (map_char_table): Use an array of int for `indices' rather than
4 an array of Lisp_Objects (which are only ever integers anyway). 7 an array of Lisp_Objects (which are only ever integers anyway).
5 (Fmap_char_table): Update caller. 8 (Fmap_char_table): Update caller.
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)
4263{ 4263{
4264 struct mem_node *m; 4264 struct mem_node *m;
4265 4265
4266 /* Quickly rule out some values which can't point to Lisp data. We 4266 /* Quickly rule out some values which can't point to Lisp data. */
4267 assume that Lisp data is aligned on even addresses. */ 4267 if ((EMACS_INT) p %
4268 if ((EMACS_INT) p & 1) 4268#ifdef USE_LSB_TAG
4269 8 /* USE_LSB_TAG needs Lisp data to be aligned on multiples of 8. */
4270#else
4271 2 /* We assume that Lisp data is aligned on even addresses. */
4272#endif
4273 )
4269 return; 4274 return;
4270 4275
4271 m = mem_find (p); 4276 m = mem_find (p);