From 9b9f5f6217a5178e348dc2e18bc6af7158b97c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Scharfe?= Date: Sat, 16 Jul 2022 19:01:18 +0200 Subject: [PATCH] packfile: use DEFINE_LIST_SORT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build a typed sort function for packed_git lists using DEFINE_LIST_SORT instead of calling llist_mergesort(). This gets rid of the next pointer accessor functions and their calling overhead at the cost of slightly increased object text size. Before: __TEXT __DATA __OBJC others dec hex 20218 320 0 110936 131474 20192 packfile.o With this patch: __TEXT __DATA __OBJC others dec hex 20430 320 0 112619 133369 208f9 packfile.o Signed-off-by: René Scharfe Signed-off-by: Junio C Hamano --- packfile.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/packfile.c b/packfile.c index 835b2d2716..dc7cd7b20b 100644 --- a/packfile.c +++ b/packfile.c @@ -926,20 +926,10 @@ unsigned long repo_approximate_object_count(struct repository *r) return r->objects->approximate_object_count; } -static void *get_next_packed_git(const void *p) -{ - return ((const struct packed_git *)p)->next; -} +DEFINE_LIST_SORT(static, sort_packs, struct packed_git, next); -static void set_next_packed_git(void *p, void *next) +static int sort_pack(const struct packed_git *a, const struct packed_git *b) { - ((struct packed_git *)p)->next = next; -} - -static int sort_pack(const void *a_, const void *b_) -{ - const struct packed_git *a = a_; - const struct packed_git *b = b_; int st; /* @@ -966,9 +956,7 @@ static int sort_pack(const void *a_, const void *b_) static void rearrange_packed_git(struct repository *r) { - r->objects->packed_git = llist_mergesort( - r->objects->packed_git, get_next_packed_git, - set_next_packed_git, sort_pack); + sort_packs(&r->objects->packed_git, sort_pack); } static void prepare_packed_git_mru(struct repository *r)