diff mbox series

[2/5] midx: inline nth_midxed_pack_entry()

Message ID 06f0f546-31c6-9cf5-5e11-999cb354c91a@web.de (mailing list archive)
State New, archived
Headers show
Series packfile: use oidset for bad objects | expand

Commit Message

René Scharfe Sept. 11, 2021, 8:39 p.m. UTC
fill_midx_entry() finds the position of an object ID and passes it to
nth_midxed_pack_entry(), which uses the position to look up the object
ID for its own purposes.  Inline the latter into the former to avoid
that lookup.


Signed-off-by: René Scharfe <l.s.r@web.de>
---
 midx.c | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

--
2.33.0
diff mbox series

Patch

diff --git a/midx.c b/midx.c
index 321c6fdd2f..8cb063023c 100644
--- a/midx.c
+++ b/midx.c
@@ -276,14 +276,18 @@  uint32_t nth_midxed_pack_int_id(struct multi_pack_index *m, uint32_t pos)
 			(off_t)pos * MIDX_CHUNK_OFFSET_WIDTH);
 }

-static int nth_midxed_pack_entry(struct repository *r,
-				 struct multi_pack_index *m,
-				 struct pack_entry *e,
-				 uint32_t pos)
+int fill_midx_entry(struct repository * r,
+		    const struct object_id *oid,
+		    struct pack_entry *e,
+		    struct multi_pack_index *m)
 {
+	uint32_t pos;
 	uint32_t pack_int_id;
 	struct packed_git *p;

+	if (!bsearch_midx(oid, m, &pos))
+		return 0;
+
 	if (pos >= m->num_objects)
 		return 0;

@@ -305,10 +309,8 @@  static int nth_midxed_pack_entry(struct repository *r,

 	if (p->num_bad_objects) {
 		uint32_t i;
-		struct object_id oid;
-		nth_midxed_object_oid(&oid, m, pos);
 		for (i = 0; i < p->num_bad_objects; i++)
-			if (hasheq(oid.hash,
+			if (hasheq(oid->hash,
 				   p->bad_object_sha1 + the_hash_algo->rawsz * i))
 				return 0;
 	}
@@ -319,19 +321,6 @@  static int nth_midxed_pack_entry(struct repository *r,
 	return 1;
 }

-int fill_midx_entry(struct repository * r,
-		    const struct object_id *oid,
-		    struct pack_entry *e,
-		    struct multi_pack_index *m)
-{
-	uint32_t pos;
-
-	if (!bsearch_midx(oid, m, &pos))
-		return 0;
-
-	return nth_midxed_pack_entry(r, m, e, pos);
-}
-
 /* Match "foo.idx" against either "foo.pack" _or_ "foo.idx". */
 static int cmp_idx_or_pack_name(const char *idx_or_pack_name,
 				const char *idx_name)