Skip to content

Commit e1e0728

Browse files
pks-tgitster
authored andcommitted
refs: drop infrastructure to peel via iterators
Now that the peeled object ID gets propagated via the `struct reference` there is no need anymore to call into the reference iterator itself to dereference an object. Remove this infrastructure. Most of the changes are straight-forward deletions of code. There is one exception though in `refs/packed-backend.c::write_with_updates()`. Here we stop peeling the iterator and instead just pass the peeled object ID of that iterator directly. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 162fc70 commit e1e0728

File tree

8 files changed

+1
-141
lines changed

8 files changed

+1
-141
lines changed

refs.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,10 +1289,6 @@ int repo_migrate_ref_storage_format(struct repository *repo,
12891289
* to the next entry, ref_iterator_advance() aborts the iteration,
12901290
* frees the ref_iterator, and returns ITER_ERROR.
12911291
*
1292-
* The reference currently being looked at can be peeled by calling
1293-
* ref_iterator_peel(). This function is often faster than peel_ref(),
1294-
* so it should be preferred when iterating over references.
1295-
*
12961292
* Putting it all together, a typical iteration looks like this:
12971293
*
12981294
* int ok;
@@ -1307,9 +1303,6 @@ int repo_migrate_ref_storage_format(struct repository *repo,
13071303
* // Access information about the current reference:
13081304
* if (!(iter->flags & REF_ISSYMREF))
13091305
* printf("%s is %s\n", iter->refname, oid_to_hex(iter->oid));
1310-
*
1311-
* // If you need to peel the reference:
1312-
* ref_iterator_peel(iter, &oid);
13131306
* }
13141307
*
13151308
* if (ok != ITER_DONE)
@@ -1400,13 +1393,6 @@ enum ref_iterator_seek_flag {
14001393
int ref_iterator_seek(struct ref_iterator *ref_iterator, const char *refname,
14011394
unsigned int flags);
14021395

1403-
/*
1404-
* If possible, peel the reference currently being viewed by the
1405-
* iterator. Return 0 on success.
1406-
*/
1407-
int ref_iterator_peel(struct ref_iterator *ref_iterator,
1408-
struct object_id *peeled);
1409-
14101396
/* Free the reference iterator and any associated resources. */
14111397
void ref_iterator_free(struct ref_iterator *ref_iterator);
14121398

refs/debug.c

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -178,16 +178,6 @@ static int debug_ref_iterator_seek(struct ref_iterator *ref_iterator,
178178
return res;
179179
}
180180

181-
static int debug_ref_iterator_peel(struct ref_iterator *ref_iterator,
182-
struct object_id *peeled)
183-
{
184-
struct debug_ref_iterator *diter =
185-
(struct debug_ref_iterator *)ref_iterator;
186-
int res = diter->iter->vtable->peel(diter->iter, peeled);
187-
trace_printf_key(&trace_refs, "iterator_peel: %s: %d\n", diter->iter->ref.name, res);
188-
return res;
189-
}
190-
191181
static void debug_ref_iterator_release(struct ref_iterator *ref_iterator)
192182
{
193183
struct debug_ref_iterator *diter =
@@ -199,7 +189,6 @@ static void debug_ref_iterator_release(struct ref_iterator *ref_iterator)
199189
static struct ref_iterator_vtable debug_ref_iterator_vtable = {
200190
.advance = debug_ref_iterator_advance,
201191
.seek = debug_ref_iterator_seek,
202-
.peel = debug_ref_iterator_peel,
203192
.release = debug_ref_iterator_release,
204193
};
205194

refs/files-backend.c

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -994,15 +994,6 @@ static int files_ref_iterator_seek(struct ref_iterator *ref_iterator,
994994
return ref_iterator_seek(iter->iter0, refname, flags);
995995
}
996996

997-
static int files_ref_iterator_peel(struct ref_iterator *ref_iterator,
998-
struct object_id *peeled)
999-
{
1000-
struct files_ref_iterator *iter =
1001-
(struct files_ref_iterator *)ref_iterator;
1002-
1003-
return ref_iterator_peel(iter->iter0, peeled);
1004-
}
1005-
1006997
static void files_ref_iterator_release(struct ref_iterator *ref_iterator)
1007998
{
1008999
struct files_ref_iterator *iter =
@@ -1013,7 +1004,6 @@ static void files_ref_iterator_release(struct ref_iterator *ref_iterator)
10131004
static struct ref_iterator_vtable files_ref_iterator_vtable = {
10141005
.advance = files_ref_iterator_advance,
10151006
.seek = files_ref_iterator_seek,
1016-
.peel = files_ref_iterator_peel,
10171007
.release = files_ref_iterator_release,
10181008
};
10191009

@@ -2389,12 +2379,6 @@ static int files_reflog_iterator_seek(struct ref_iterator *ref_iterator UNUSED,
23892379
BUG("ref_iterator_seek() called for reflog_iterator");
23902380
}
23912381

2392-
static int files_reflog_iterator_peel(struct ref_iterator *ref_iterator UNUSED,
2393-
struct object_id *peeled UNUSED)
2394-
{
2395-
BUG("ref_iterator_peel() called for reflog_iterator");
2396-
}
2397-
23982382
static void files_reflog_iterator_release(struct ref_iterator *ref_iterator)
23992383
{
24002384
struct files_reflog_iterator *iter =
@@ -2405,7 +2389,6 @@ static void files_reflog_iterator_release(struct ref_iterator *ref_iterator)
24052389
static struct ref_iterator_vtable files_reflog_iterator_vtable = {
24062390
.advance = files_reflog_iterator_advance,
24072391
.seek = files_reflog_iterator_seek,
2408-
.peel = files_reflog_iterator_peel,
24092392
.release = files_reflog_iterator_release,
24102393
};
24112394

refs/iterator.c

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,6 @@ int ref_iterator_seek(struct ref_iterator *ref_iterator, const char *refname,
2121
return ref_iterator->vtable->seek(ref_iterator, refname, flags);
2222
}
2323

24-
int ref_iterator_peel(struct ref_iterator *ref_iterator,
25-
struct object_id *peeled)
26-
{
27-
return ref_iterator->vtable->peel(ref_iterator, peeled);
28-
}
29-
3024
void ref_iterator_free(struct ref_iterator *ref_iterator)
3125
{
3226
if (ref_iterator) {
@@ -60,20 +54,13 @@ static int empty_ref_iterator_seek(struct ref_iterator *ref_iterator UNUSED,
6054
return 0;
6155
}
6256

63-
static int empty_ref_iterator_peel(struct ref_iterator *ref_iterator UNUSED,
64-
struct object_id *peeled UNUSED)
65-
{
66-
BUG("peel called for empty iterator");
67-
}
68-
6957
static void empty_ref_iterator_release(struct ref_iterator *ref_iterator UNUSED)
7058
{
7159
}
7260

7361
static struct ref_iterator_vtable empty_ref_iterator_vtable = {
7462
.advance = empty_ref_iterator_advance,
7563
.seek = empty_ref_iterator_seek,
76-
.peel = empty_ref_iterator_peel,
7764
.release = empty_ref_iterator_release,
7865
};
7966

@@ -240,18 +227,6 @@ static int merge_ref_iterator_seek(struct ref_iterator *ref_iterator,
240227
return 0;
241228
}
242229

243-
static int merge_ref_iterator_peel(struct ref_iterator *ref_iterator,
244-
struct object_id *peeled)
245-
{
246-
struct merge_ref_iterator *iter =
247-
(struct merge_ref_iterator *)ref_iterator;
248-
249-
if (!iter->current) {
250-
BUG("peel called before advance for merge iterator");
251-
}
252-
return ref_iterator_peel(*iter->current, peeled);
253-
}
254-
255230
static void merge_ref_iterator_release(struct ref_iterator *ref_iterator)
256231
{
257232
struct merge_ref_iterator *iter =
@@ -263,7 +238,6 @@ static void merge_ref_iterator_release(struct ref_iterator *ref_iterator)
263238
static struct ref_iterator_vtable merge_ref_iterator_vtable = {
264239
.advance = merge_ref_iterator_advance,
265240
.seek = merge_ref_iterator_seek,
266-
.peel = merge_ref_iterator_peel,
267241
.release = merge_ref_iterator_release,
268242
};
269243

@@ -412,15 +386,6 @@ static int prefix_ref_iterator_seek(struct ref_iterator *ref_iterator,
412386
return ref_iterator_seek(iter->iter0, refname, flags);
413387
}
414388

415-
static int prefix_ref_iterator_peel(struct ref_iterator *ref_iterator,
416-
struct object_id *peeled)
417-
{
418-
struct prefix_ref_iterator *iter =
419-
(struct prefix_ref_iterator *)ref_iterator;
420-
421-
return ref_iterator_peel(iter->iter0, peeled);
422-
}
423-
424389
static void prefix_ref_iterator_release(struct ref_iterator *ref_iterator)
425390
{
426391
struct prefix_ref_iterator *iter =
@@ -432,7 +397,6 @@ static void prefix_ref_iterator_release(struct ref_iterator *ref_iterator)
432397
static struct ref_iterator_vtable prefix_ref_iterator_vtable = {
433398
.advance = prefix_ref_iterator_advance,
434399
.seek = prefix_ref_iterator_seek,
435-
.peel = prefix_ref_iterator_peel,
436400
.release = prefix_ref_iterator_release,
437401
};
438402

refs/packed-backend.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,22 +1030,6 @@ static int packed_ref_iterator_seek(struct ref_iterator *ref_iterator,
10301030
return 0;
10311031
}
10321032

1033-
static int packed_ref_iterator_peel(struct ref_iterator *ref_iterator,
1034-
struct object_id *peeled)
1035-
{
1036-
struct packed_ref_iterator *iter =
1037-
(struct packed_ref_iterator *)ref_iterator;
1038-
1039-
if ((iter->base.ref.flags & REF_KNOWS_PEELED)) {
1040-
oidcpy(peeled, &iter->peeled);
1041-
return is_null_oid(&iter->peeled) ? -1 : 0;
1042-
} else if ((iter->base.ref.flags & (REF_ISBROKEN | REF_ISSYMREF))) {
1043-
return -1;
1044-
} else {
1045-
return peel_object(iter->repo, &iter->oid, peeled) ? -1 : 0;
1046-
}
1047-
}
1048-
10491033
static void packed_ref_iterator_release(struct ref_iterator *ref_iterator)
10501034
{
10511035
struct packed_ref_iterator *iter =
@@ -1059,7 +1043,6 @@ static void packed_ref_iterator_release(struct ref_iterator *ref_iterator)
10591043
static struct ref_iterator_vtable packed_ref_iterator_vtable = {
10601044
.advance = packed_ref_iterator_advance,
10611045
.seek = packed_ref_iterator_seek,
1062-
.peel = packed_ref_iterator_peel,
10631046
.release = packed_ref_iterator_release,
10641047
};
10651048

@@ -1526,13 +1509,8 @@ static enum ref_transaction_error write_with_updates(struct packed_ref_store *re
15261509

15271510
if (cmp < 0) {
15281511
/* Pass the old reference through. */
1529-
1530-
struct object_id peeled;
1531-
int peel_error = ref_iterator_peel(iter, &peeled);
1532-
15331512
if (write_packed_entry(out, iter->ref.name,
1534-
iter->ref.oid,
1535-
peel_error ? NULL : &peeled))
1513+
iter->ref.oid, iter->ref.peeled_oid))
15361514
goto write_error;
15371515

15381516
if ((ok = ref_iterator_advance(iter)) != ITER_OK) {

refs/ref-cache.c

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -546,14 +546,6 @@ static int cache_ref_iterator_seek(struct ref_iterator *ref_iterator,
546546
return 0;
547547
}
548548

549-
static int cache_ref_iterator_peel(struct ref_iterator *ref_iterator,
550-
struct object_id *peeled)
551-
{
552-
struct cache_ref_iterator *iter =
553-
(struct cache_ref_iterator *)ref_iterator;
554-
return peel_object(iter->repo, ref_iterator->ref.oid, peeled) ? -1 : 0;
555-
}
556-
557549
static void cache_ref_iterator_release(struct ref_iterator *ref_iterator)
558550
{
559551
struct cache_ref_iterator *iter =
@@ -565,7 +557,6 @@ static void cache_ref_iterator_release(struct ref_iterator *ref_iterator)
565557
static struct ref_iterator_vtable cache_ref_iterator_vtable = {
566558
.advance = cache_ref_iterator_advance,
567559
.seek = cache_ref_iterator_seek,
568-
.peel = cache_ref_iterator_peel,
569560
.release = cache_ref_iterator_release,
570561
};
571562

refs/refs-internal.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -357,12 +357,6 @@ typedef int ref_iterator_advance_fn(struct ref_iterator *ref_iterator);
357357
typedef int ref_iterator_seek_fn(struct ref_iterator *ref_iterator,
358358
const char *refname, unsigned int flags);
359359

360-
/*
361-
* Peels the current ref, returning 0 for success or -1 for failure.
362-
*/
363-
typedef int ref_iterator_peel_fn(struct ref_iterator *ref_iterator,
364-
struct object_id *peeled);
365-
366360
/*
367361
* Implementations of this function should free any resources specific
368362
* to the derived class.
@@ -372,7 +366,6 @@ typedef void ref_iterator_release_fn(struct ref_iterator *ref_iterator);
372366
struct ref_iterator_vtable {
373367
ref_iterator_advance_fn *advance;
374368
ref_iterator_seek_fn *seek;
375-
ref_iterator_peel_fn *peel;
376369
ref_iterator_release_fn *release;
377370
};
378371

refs/reftable-backend.c

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -744,21 +744,6 @@ static int reftable_ref_iterator_seek(struct ref_iterator *ref_iterator,
744744
return iter->err;
745745
}
746746

747-
static int reftable_ref_iterator_peel(struct ref_iterator *ref_iterator,
748-
struct object_id *peeled)
749-
{
750-
struct reftable_ref_iterator *iter =
751-
(struct reftable_ref_iterator *)ref_iterator;
752-
753-
if (iter->ref.value_type == REFTABLE_REF_VAL2) {
754-
oidread(peeled, iter->ref.value.val2.target_value,
755-
iter->refs->base.repo->hash_algo);
756-
return 0;
757-
}
758-
759-
return -1;
760-
}
761-
762747
static void reftable_ref_iterator_release(struct ref_iterator *ref_iterator)
763748
{
764749
struct reftable_ref_iterator *iter =
@@ -776,7 +761,6 @@ static void reftable_ref_iterator_release(struct ref_iterator *ref_iterator)
776761
static struct ref_iterator_vtable reftable_ref_iterator_vtable = {
777762
.advance = reftable_ref_iterator_advance,
778763
.seek = reftable_ref_iterator_seek,
779-
.peel = reftable_ref_iterator_peel,
780764
.release = reftable_ref_iterator_release,
781765
};
782766

@@ -2098,13 +2082,6 @@ static int reftable_reflog_iterator_seek(struct ref_iterator *ref_iterator UNUSE
20982082
return -1;
20992083
}
21002084

2101-
static int reftable_reflog_iterator_peel(struct ref_iterator *ref_iterator UNUSED,
2102-
struct object_id *peeled UNUSED)
2103-
{
2104-
BUG("reftable reflog iterator cannot be peeled");
2105-
return -1;
2106-
}
2107-
21082085
static void reftable_reflog_iterator_release(struct ref_iterator *ref_iterator)
21092086
{
21102087
struct reftable_reflog_iterator *iter =
@@ -2117,7 +2094,6 @@ static void reftable_reflog_iterator_release(struct ref_iterator *ref_iterator)
21172094
static struct ref_iterator_vtable reftable_reflog_iterator_vtable = {
21182095
.advance = reftable_reflog_iterator_advance,
21192096
.seek = reftable_reflog_iterator_seek,
2120-
.peel = reftable_reflog_iterator_peel,
21212097
.release = reftable_reflog_iterator_release,
21222098
};
21232099

0 commit comments

Comments
 (0)