git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] mem-pool: simplify alignment calculation

From
René Scharfe <l.s.r@web.de>
Date
Dec 24, 2023, 17:02 UTC
Message-ID
<3e15d11a-bd19-49ca-b674-9b50e0ba7fc2@web.de>

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(-)
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)
--
2.43.0
Message 1 of 1 in “mem-pool: simplify alignment calculation”
  1. mem-pool: simplify alignment calculationRené Scharfe, Dec 24, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.