Git fork

packfile: use DEFINE_LIST_SORT

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 <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

René Scharfe and committed by
Junio C Hamano
9b9f5f62 6fc9fec0

+3 -15
+3 -15
packfile.c
··· 926 926 return r->objects->approximate_object_count; 927 927 } 928 928 929 - static void *get_next_packed_git(const void *p) 930 - { 931 - return ((const struct packed_git *)p)->next; 932 - } 933 - 934 - static void set_next_packed_git(void *p, void *next) 935 - { 936 - ((struct packed_git *)p)->next = next; 937 - } 929 + DEFINE_LIST_SORT(static, sort_packs, struct packed_git, next); 938 930 939 - static int sort_pack(const void *a_, const void *b_) 931 + static int sort_pack(const struct packed_git *a, const struct packed_git *b) 940 932 { 941 - const struct packed_git *a = a_; 942 - const struct packed_git *b = b_; 943 933 int st; 944 934 945 935 /* ··· 966 956 967 957 static void rearrange_packed_git(struct repository *r) 968 958 { 969 - r->objects->packed_git = llist_mergesort( 970 - r->objects->packed_git, get_next_packed_git, 971 - set_next_packed_git, sort_pack); 959 + sort_packs(&r->objects->packed_git, sort_pack); 972 960 } 973 961 974 962 static void prepare_packed_git_mru(struct repository *r)