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