aboutsummaryrefslogtreecommitdiffstats
path: root/midx.c
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2022-08-22 15:50:41 -0400
committerJunio C Hamano <gitster@pobox.com>2022-08-22 13:04:22 -0700
commit852c530102c5ca5b69ae863acaa1acb50cbba861 (patch)
treeedb6cec740c79aa80eea2a4e08b89d0ef0573b79 /midx.c
parent989d9cbd5c32fad54391a4ed06b1271f0a891077 (diff)
downloadgit-852c530102c5ca5b69ae863acaa1acb50cbba861.tar.gz
midx.c: extract `midx_fanout_add_midx_fanout()`
Extract a routine to add all objects whose object ID's first byte is `cur_fanout` from an existing MIDX. This function will only be called once, so extracting it is purely cosmetic to improve the readability of `get_sorted_entries()` (its sole caller) below. The functionality is unchanged in this commit. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'midx.c')
-rw-r--r--midx.c47
1 files changed, 28 insertions, 19 deletions
diff --git a/midx.c b/midx.c
index b4f6e37cd0..17bdceed25 100644
--- a/midx.c
+++ b/midx.c
@@ -593,6 +593,31 @@ static void midx_fanout_sort(struct midx_fanout *fanout)
QSORT(fanout->entries, fanout->nr, midx_oid_compare);
}
+static void midx_fanout_add_midx_fanout(struct midx_fanout *fanout,
+ struct multi_pack_index *m,
+ int preferred_pack,
+ uint32_t cur_fanout)
+{
+ uint32_t start = 0, end;
+ uint32_t cur_object;
+
+ if (cur_fanout)
+ start = ntohl(m->chunk_oid_fanout[cur_fanout - 1]);
+ end = ntohl(m->chunk_oid_fanout[cur_fanout]);
+
+ for (cur_object = start; cur_object < end; cur_object++) {
+ midx_fanout_grow(fanout, fanout->nr + 1);
+ nth_midxed_pack_midx_entry(m,
+ &fanout->entries[fanout->nr],
+ cur_object);
+ if (nth_midxed_pack_int_id(m, cur_object) == preferred_pack)
+ fanout->entries[fanout->nr].preferred = 1;
+ else
+ fanout->entries[fanout->nr].preferred = 0;
+ fanout->nr++;
+ }
+}
+
/*
* It is possible to artificially get into a state where there are many
* duplicate copies of objects. That can create high memory pressure if
@@ -633,25 +658,9 @@ static struct pack_midx_entry *get_sorted_entries(struct multi_pack_index *m,
for (cur_fanout = 0; cur_fanout < 256; cur_fanout++) {
fanout.nr = 0;
- if (m) {
- uint32_t start = 0, end;
-
- if (cur_fanout)
- start = ntohl(m->chunk_oid_fanout[cur_fanout - 1]);
- end = ntohl(m->chunk_oid_fanout[cur_fanout]);
-
- for (cur_object = start; cur_object < end; cur_object++) {
- midx_fanout_grow(&fanout, fanout.nr + 1);
- nth_midxed_pack_midx_entry(m,
- &fanout.entries[fanout.nr],
- cur_object);
- if (nth_midxed_pack_int_id(m, cur_object) == preferred_pack)
- fanout.entries[fanout.nr].preferred = 1;
- else
- fanout.entries[fanout.nr].preferred = 0;
- fanout.nr++;
- }
- }
+ if (m)
+ midx_fanout_add_midx_fanout(&fanout, m, preferred_pack,
+ cur_fanout);
for (cur_pack = start_pack; cur_pack < nr_packs; cur_pack++) {
uint32_t start = 0, end;