Message ID | 3e15d11a-bd19-49ca-b674-9b50e0ba7fc2@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mem-pool: simplify alignment calculation | expand |
diff --git a/mem-pool.c b/mem-pool.c index 2b25521e2d..2078c22b09 100644 --- a/mem-pool.c +++ b/mem-pool.c @@ -89,9 +89,7 @@ void *mem_pool_alloc(struct mem_pool *pool, size_t len) struct mp_block *p = NULL; void *r; - /* round up to a 'GIT_MAX_ALIGNMENT' alignment */ - if (len & (GIT_MAX_ALIGNMENT - 1)) - len += GIT_MAX_ALIGNMENT - (len & (GIT_MAX_ALIGNMENT - 1)); + len = DIV_ROUND_UP(len, GIT_MAX_ALIGNMENT) * GIT_MAX_ALIGNMENT; if (pool->mp_block && pool->mp_block->end - pool->mp_block->next_free >= len)
Use DIV_ROUND_UP in mem_pool_alloc() to round the allocation length to the next multiple of GIT_MAX_ALIGNMENT instead of twiddling bits explicitly. This is shorter and clearer, to the point that we no longer need the comment that explains what's being calculated. Signed-off-by: René Scharfe <l.s.r@web.de> --- Latest Clang emits the same x64 instructions for both versions; GCC only emits the supposedly optimal output for the patched version: https://godbolt.org/z/jPscnPqna mem-pool.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -- 2.43.0