From b097b47aa21a4bd7da9c87f156f68acecd621537 Mon Sep 17 00:00:00 2001 From: Matthew Parkinson Date: Thu, 17 Jan 2019 14:05:38 +0000 Subject: [PATCH] Handle 2^16 slabs This code assumes that 16bit uint wrapping can be used, rather than masking by SLAB_SIZE-1. Add explicit mask, so we can change the SLAB_SIZE to be smaller. --- src/mem/slab.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mem/slab.h b/src/mem/slab.h index 33138d9..ec9a000 100644 --- a/src/mem/slab.h +++ b/src/mem/slab.h @@ -58,7 +58,7 @@ namespace snmalloc { // This slab is being bump allocated. p = (void*)((size_t)this + head - 1); - meta->head = head + (uint16_t)rsize; + meta->head = (head + (uint16_t)rsize) & (SLAB_SIZE - 1); if (meta->head == 1) { meta->set_full();