[PATCH v5 11/25] perf hist: Remove evsel parameter from inc samples functions

Ian Rogers
2026-04-03T20:40:50Z

hist_entry__inc_addr_samples and addr_map_symbol__inc_samples
unnecessarily take an evsel argument. Read the evsel from the sample
instead.

Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/builtin-annotate.c | 7 +++----
tools/perf/builtin-c2c.c | 2 +-
tools/perf/builtin-report.c | 18 ++++++++----------
tools/perf/builtin-top.c | 6 +++---
tools/perf/util/annotate.c | 19 +++++++++----------
tools/perf/util/annotate.h | 6 ++----
6 files changed, 26 insertions(+), 32 deletions(-)

diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index c97a0fe159f8..c2d0599fe5f5 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -177,16 +177,15 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
struct hist_entry *he = iter->he;
struct branch_info *bi;
struct perf_sample *sample = iter->sample;
- struct evsel *evsel = iter->evsel;
int err;

bi = he->branch_info;
- err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
+ err = addr_map_symbol__inc_samples(&bi->from, sample);

if (err)
goto out;

- err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
+ err = addr_map_symbol__inc_samples(&bi->to, sample);

out:
return err;
@@ -276,7 +275,7 @@ static int evsel__add_sample(struct evsel *evsel, struct perf_sample *sample,
if (he == NULL)
return -ENOMEM;

- ret = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+ ret = hist_entry__inc_addr_samples(he, sample, al->addr);
hists__inc_nr_samples(hists, true);
return ret;
}
diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index f9ac871264af..5684c14c2bf6 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -371,7 +371,7 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,

if (perf_c2c__has_annotation(NULL)) {
perf_c2c__evsel_hists_inc_stats(evsel, he, sample);
- addr_map_symbol__inc_samples(mem_info__iaddr(mi), sample, evsel);
+ addr_map_symbol__inc_samples(mem_info__iaddr(mi), sample);
}

ret = hist_entry__append_callchain(he, sample);
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 507002cbdd5b..39968ae5cfb0 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -170,7 +170,6 @@ static int hist_iter__report_callback(struct hist_entry_iter *iter,
int err = 0;
struct report *rep = arg;
struct hist_entry *he = iter->he;
- struct evsel *evsel = iter->evsel;
struct perf_sample *sample = iter->sample;
struct mem_info *mi;
struct branch_info *bi;
@@ -180,25 +179,25 @@ static int hist_iter__report_callback(struct hist_entry_iter *iter,

if (sort__mode == SORT_MODE__BRANCH) {
bi = he->branch_info;
- err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
+ err = addr_map_symbol__inc_samples(&bi->from, sample);
if (err)
goto out;

- err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
+ err = addr_map_symbol__inc_samples(&bi->to, sample);

} else if (rep->mem_mode) {
mi = he->mem_info;
- err = addr_map_symbol__inc_samples(mem_info__daddr(mi), sample, evsel);
+ err = addr_map_symbol__inc_samples(mem_info__daddr(mi), sample);
if (err)
goto out;

- err = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+ err = hist_entry__inc_addr_samples(he, sample, al->addr);

} else if (symbol_conf.cumulate_callchain) {
if (single)
- err = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+ err = hist_entry__inc_addr_samples(he, sample, al->addr);
} else {
- err = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+ err = hist_entry__inc_addr_samples(he, sample, al->addr);
}

out:
@@ -214,7 +213,6 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
struct report *rep = arg;
struct branch_info *bi = he->branch_info;
struct perf_sample *sample = iter->sample;
- struct evsel *evsel = iter->evsel;
int err;

branch_type_count(&rep->brtype_stat, &bi->flags,
@@ -223,11 +221,11 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
if (!ui__has_annotation() && !rep->symbol_ipc)
return 0;

- err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
+ err = addr_map_symbol__inc_samples(&bi->from, sample);
if (err)
goto out;

- err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
+ err = addr_map_symbol__inc_samples(&bi->to, sample);

out:
return err;
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 37950efb28ac..b879592ae745 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -199,7 +199,7 @@ static void ui__warn_map_erange(struct map *map, struct symbol *sym, u64 ip)
static void perf_top__record_precise_ip(struct perf_top *top,
struct hist_entry *he,
struct perf_sample *sample,
- struct evsel *evsel, u64 ip)
+ u64 ip)
EXCLUSIVE_LOCKS_REQUIRED(he->hists->lock)
{
struct annotation *notes;
@@ -216,7 +216,7 @@ static void perf_top__record_precise_ip(struct perf_top *top,
if (!annotation__trylock(notes))
return;

- err = hist_entry__inc_addr_samples(he, sample, evsel, ip);
+ err = hist_entry__inc_addr_samples(he, sample, ip);

annotation__unlock(notes);

@@ -735,7 +735,7 @@ static int hist_iter__top_callback(struct hist_entry_iter *iter,
struct evsel *evsel = iter->evsel;

if (perf_hpp_list.sym && single)
- perf_top__record_precise_ip(top, iter->he, iter->sample, evsel, al->addr);
+ perf_top__record_precise_ip(top, iter->he, iter->sample, al->addr);

hist__account_cycles(iter->sample->branch_stack, al, iter->sample,
!(top->record_opts.branch_stack & PERF_SAMPLE_BRANCH_ANY),
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 63f0ee9d4c03..d97cb087a63e 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -214,9 +214,10 @@ static int __symbol__account_cycles(struct cyc_hist *ch,
}

static int __symbol__inc_addr_samples(struct map_symbol *ms,
- struct annotated_source *src, struct evsel *evsel, u64 addr,
+ struct annotated_source *src, u64 addr,
struct perf_sample *sample)
{
+ struct evsel *evsel = sample->evsel;
struct symbol *sym = ms->sym;
long hash_key;
u64 offset;
@@ -319,7 +320,7 @@ struct annotated_source *symbol__hists(struct symbol *sym, int nr_hists)
}

static int symbol__inc_addr_samples(struct map_symbol *ms,
- struct evsel *evsel, u64 addr,
+ u64 addr,
struct perf_sample *sample)
{
struct symbol *sym = ms->sym;
@@ -327,8 +328,8 @@ static int symbol__inc_addr_samples(struct map_symbol *ms,

if (sym == NULL)
return 0;
- src = symbol__hists(sym, evsel->evlist->core.nr_entries);
- return src ? __symbol__inc_addr_samples(ms, src, evsel, addr, sample) : 0;
+ src = symbol__hists(sym, sample->evsel->evlist->core.nr_entries);
+ return src ? __symbol__inc_addr_samples(ms, src, addr, sample) : 0;
}

static int symbol__account_br_cntr(struct annotated_branch *branch,
@@ -582,16 +583,14 @@ static int annotation__compute_ipc(struct annotation *notes, size_t size,
return 0;
}

-int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample,
- struct evsel *evsel)
+int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample)
{
- return symbol__inc_addr_samples(&ams->ms, evsel, ams->al_addr, sample);
+ return symbol__inc_addr_samples(&ams->ms, ams->al_addr, sample);
}

-int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample,
- struct evsel *evsel, u64 ip)
+int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample, u64 ip)
{
- return symbol__inc_addr_samples(&he->ms, evsel, ip, sample);
+ return symbol__inc_addr_samples(&he->ms, ip, sample);
}

diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index 696e36dbf013..1aa6df7d1618 100644
--- a/tools/perf/util/annotate.h
+++ b/tools/perf/util/annotate.h
@@ -422,8 +422,7 @@ static inline struct annotation *symbol__annotation(struct symbol *sym)
return (void *)sym - symbol_conf.priv_size;
}

-int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample,
- struct evsel *evsel);
+int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample);

struct annotated_branch *annotation__get_branch(struct annotation *notes);

@@ -433,8 +432,7 @@ int addr_map_symbol__account_cycles(struct addr_map_symbol *ams,
struct evsel *evsel,
u64 br_cntr);

-int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample,
- struct evsel *evsel, u64 addr);
+int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample, u64 addr);

struct annotated_source *symbol__hists(struct symbol *sym, int nr_hists);
void symbol__annotate_zero_histograms(struct symbol *sym);
--
2.53.0.1213.gd9a14994de-goog