Do not under-align pseudovectors
Problem reported by Fabrice Popineau in: https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00357.html Also see diagnosis by Eli Zaretskii in: https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00476.html * src/alloc.c (vector_alignment): Now a multiple of alignof (max_align_t).
This commit is contained in:
parent
ff33053012
commit
d7038020aa
1 changed files with 7 additions and 3 deletions
10
src/alloc.c
10
src/alloc.c
|
@ -2923,9 +2923,13 @@ set_next_vector (struct Lisp_Vector *v, struct Lisp_Vector *p)
|
|||
|
||||
enum
|
||||
{
|
||||
/* Alignment of struct Lisp_Vector objects. */
|
||||
vector_alignment = COMMON_MULTIPLE (FLEXALIGNOF (struct Lisp_Vector),
|
||||
GCALIGNMENT),
|
||||
/* Alignment of struct Lisp_Vector objects. Because pseudovectors
|
||||
can contain any C type, align at least as strictly as
|
||||
max_align_t. On x86 and x86-64 this can waste up to 8 bytes
|
||||
for typical vectors, since alignof (max_align_t) is 16 but
|
||||
typical vectors need only an alignment of 8. However, it is
|
||||
not worth the hassle to avoid wasting those bytes. */
|
||||
vector_alignment = COMMON_MULTIPLE (alignof (max_align_t), GCALIGNMENT),
|
||||
|
||||
/* Vector size requests are a multiple of this. */
|
||||
roundup_size = COMMON_MULTIPLE (vector_alignment, word_size)
|
||||
|
|
Loading…
Add table
Reference in a new issue