From 3d3b048776fd576c725a06bd8c4432c50abca81b Mon Sep 17 00:00:00 2001 From: Nathaniel Filardo Date: Tue, 12 May 2020 17:35:52 +0000 Subject: [PATCH] mediumslab: stop assuming page-alignedness of objects With large pages (e.g. the 64K that Debian defaults to for ppc64), this is a bit much to ask. It's only not true for the bottom few medium size classes, tho', as all sizes above 256K are multiples of 64K with the current two mantissa bits size schedule. --- src/mem/alloc.h | 6 ------ src/mem/mediumslab.h | 7 +++---- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/mem/alloc.h b/src/mem/alloc.h index b238bc2..b568cbc 100644 --- a/src/mem/alloc.h +++ b/src/mem/alloc.h @@ -733,12 +733,6 @@ namespace snmalloc size_t size1 = sizeclass_to_size(sc1); size_t size2 = sizeclass_to_size(sc2); - // All medium size classes are page aligned. - if (i > NUM_SMALL_CLASSES) - { - SNMALLOC_ASSERT(is_aligned_block(nullptr, size1)); - } - SNMALLOC_ASSERT(sc1 == i); SNMALLOC_ASSERT(sc1 == sc2); SNMALLOC_ASSERT(size1 == size); diff --git a/src/mem/mediumslab.h b/src/mem/mediumslab.h index d7632d5..59a10f2 100644 --- a/src/mem/mediumslab.h +++ b/src/mem/mediumslab.h @@ -85,11 +85,10 @@ namespace snmalloc void* p = pointer_offset(this, (static_cast(index) << 8)); free--; - SNMALLOC_ASSERT(is_aligned_block(p, OS_PAGE_SIZE)); - size = bits::align_up(size, OS_PAGE_SIZE); - if constexpr (zero_mem == YesZero) - memory_provider.template zero(p, size); + memory_provider.zero(p, size); + else + UNUSED(size); return p; }