diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-01-18 13:49:56 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-01-18 13:49:56 -0800 |
commit | eb8638abec6a5f9dc733b8032e1fd6863507b364 (patch) | |
tree | ce677b15ebb2b6eb27745baa73b86b0527d32ae1 /sha1-name.c | |
parent | Merge branch 'po/git-p4-wo-login' (diff) | |
parent | object-store: retire odb_load_loose_cache() (diff) | |
download | tgif-eb8638abec6a5f9dc733b8032e1fd6863507b364.tar.xz |
Merge branch 'rs/loose-object-cache-perffix'
The loose object cache used to optimize existence look-up has been
updated.
* rs/loose-object-cache-perffix:
object-store: retire odb_load_loose_cache()
object-store: use one oid_array per subdirectory for loose cache
object-store: factor out odb_clear_loose_cache()
object-store: factor out odb_loose_cache()
Diffstat (limited to 'sha1-name.c')
-rw-r--r-- | sha1-name.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sha1-name.c b/sha1-name.c index b24502811b..a656481c6a 100644 --- a/sha1-name.c +++ b/sha1-name.c @@ -87,21 +87,21 @@ static int match_sha(unsigned, const unsigned char *, const unsigned char *); static void find_short_object_filename(struct disambiguate_state *ds) { - int subdir_nr = ds->bin_pfx.hash[0]; struct object_directory *odb; for (odb = the_repository->objects->odb; odb && !ds->ambiguous; odb = odb->next) { int pos; + struct oid_array *loose_objects; - odb_load_loose_cache(odb, subdir_nr); - pos = oid_array_lookup(&odb->loose_objects_cache, &ds->bin_pfx); + loose_objects = odb_loose_cache(odb, &ds->bin_pfx); + pos = oid_array_lookup(loose_objects, &ds->bin_pfx); if (pos < 0) pos = -1 - pos; - while (!ds->ambiguous && pos < odb->loose_objects_cache.nr) { + while (!ds->ambiguous && pos < loose_objects->nr) { const struct object_id *oid; - oid = odb->loose_objects_cache.oid + pos; + oid = loose_objects->oid + pos; if (!match_sha(ds->len, ds->bin_pfx.hash, oid->hash)) break; update_candidates(ds, oid); |