summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2017-07-25 01:12:50 +0200
committerAndreas Schwab <schwab@linux-m68k.org>2017-07-25 01:20:44 +0200
commit7a4d9f6304cffa39642507609605bcbfa40d4675 (patch)
treebb6fec695a423165549a86781e9c0404aede246a
parentb46a02eda44161afd4b2a6b0cdb1fed3efc504fd (diff)
downloademacs-7a4d9f6304cffa39642507609605bcbfa40d4675.tar.gz
Properly align global lispsym
* lib-src/make-docfile.c (close_emacs_globals): Wrap struct Lisp_Symbols inside struct. * src/alloc.c (sweep_symbols): Update use of lispsym. * src/lisp.h (builtin_lisp_symbol): Likewise.
-rw-r--r--lib-src/make-docfile.c4
-rw-r--r--src/alloc.c2
-rw-r--r--src/lisp.h4
3 files changed, 6 insertions, 4 deletions
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index 6b2cc110403..ecd6447ab78 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -667,7 +667,9 @@ close_emacs_globals (ptrdiff_t num_symbols)
"#ifndef DEFINE_SYMBOLS\n"
"extern\n"
"#endif\n"
- "struct Lisp_Symbol alignas (GCALIGNMENT) lispsym[%td];\n"),
+ "struct {\n"
+ " struct Lisp_Symbol alignas (GCALIGNMENT) s;\n"
+ "} lispsym[%td];\n"),
num_symbols);
}
diff --git a/src/alloc.c b/src/alloc.c
index 2d785d5b9a4..2cee6462564 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -6943,7 +6943,7 @@ sweep_symbols (void)
symbol_free_list = NULL;
for (int i = 0; i < ARRAYELTS (lispsym); i++)
- lispsym[i].gcmarkbit = 0;
+ lispsym[i].s.gcmarkbit = 0;
for (sblk = symbol_block; sblk; sblk = *sprev)
{
diff --git a/src/lisp.h b/src/lisp.h
index 9464bf8559f..cffaf954b3b 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -838,13 +838,13 @@ make_lisp_symbol (struct Lisp_Symbol *sym)
INLINE Lisp_Object
builtin_lisp_symbol (int index)
{
- return make_lisp_symbol (lispsym + index);
+ return make_lisp_symbol (&lispsym[index].s);
}
INLINE void
(CHECK_SYMBOL) (Lisp_Object x)
{
- lisp_h_CHECK_SYMBOL (x);
+ lisp_h_CHECK_SYMBOL (x);
}
/* In the size word of a vector, this bit means the vector has been marked. */