From 4ae63739a5aadf5cbe1613bf1b876a31473e72b7 Mon Sep 17 00:00:00 2001 From: Rene Damm Date: Thu, 6 Feb 2014 17:10:28 +0100 Subject: [PATCH] Don't bump alignment for small structures on x64 to stay compatible with ABI. --- mono/metadata/class.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mono/metadata/class.c b/mono/metadata/class.c index 7b00b81ca3b..26553d05c90 100644 --- a/mono/metadata/class.c +++ b/mono/metadata/class.c @@ -1782,6 +1782,9 @@ mono_class_layout_fields (MonoClass *class) break; } +#if !defined(__x86_64__) /* Disable for x86_64 to stay compatible with default ABI layouting rules. We keep + natural alignment for structs which is enough to not generate alignment errors on + things like pointers and such. */ if (layout != TYPE_ATTRIBUTE_EXPLICIT_LAYOUT) { /* * For small structs, set min_align to at least the struct size to improve @@ -1791,6 +1794,7 @@ mono_class_layout_fields (MonoClass *class) if (class->instance_size <= sizeof (MonoObject) + sizeof (gpointer)) class->min_align = MAX (class->min_align, class->instance_size - sizeof (MonoObject)); } +#endif class->size_inited = 1; -- GitLab