Re: [PATCH v2 03/14] blame: use commit-slab for blame suspects instead of commit->util
From: Junio C Hamano <hidden>
Date: 2018-05-13 23:42:44
Nguyễn Thái Ngọc Duy [off-list ref] writes:
quoted hunk
It's done so that commit->util can be removed. See more explanation in the commit that removes commit->util. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- blame.c | 42 +++++++++++++++++++++++++++++++----------- blame.h | 2 ++ builtin/blame.c | 2 +- 3 files changed, 34 insertions(+), 12 deletions(-)diff --git a/blame.c b/blame.c index 78c9808bd1..18e8bd996a 100644 --- a/blame.c +++ b/blame.c@@ -6,6 +6,24 @@ #include "diffcore.h" #include "tag.h" #include "blame.h" +#include "commit-slab.h" + +define_commit_slab(blame_suspects, struct blame_origin *); +static struct blame_suspects blame_suspects; + +struct blame_origin *get_blame_suspects(struct commit *commit) +{ + struct blame_origin **result; + + result = blame_suspects_peek(&blame_suspects, commit); + + return result ? *result : NULL; +} + +static void set_blame_suspects(struct commit *commit, struct blame_origin *origin) +{ + *blame_suspects_at(&blame_suspects, commit) = origin; +} void blame_origin_decref(struct blame_origin *o) {
This makes really a pleasant read. With these helpers in place, the remainder of this patch becomes mechanical substitution to call get_blame_suspects when commit->util appears on the RHS of an expression and set_blame_suspects when commit->util gets assigned.
quoted hunk
@@ -15,12 +33,12 @@ void blame_origin_decref(struct blame_origin *o) blame_origin_decref(o->previous); free(o->file.ptr); /* Should be present exactly once in commit chain */ - for (p = o->commit->util; p; l = p, p = p->next) { + for (p = get_blame_suspects(o->commit); p; l = p, p = p->next) { if (p == o) { if (l) l->next = p->next; else - o->commit->util = p->next; + set_blame_suspects(o->commit, p->next); free(o); return; }