From f6b18ababa5ea8d7f798aa452eae83058fd09c59 Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Thu, 4 Apr 2024 10:57:14 -0700 Subject: [PATCH] perf annotate: Move 'max_jump_sources' struct to 'struct annotated_source' It's only used in 'perf annotate' output which means functions with actual samples. No need to consume memory for every symbol ('struct annotation'). Signed-off-by: Namhyung Kim Cc: Adrian Hunter Cc: Ian Rogers Cc: Ingo Molnar Cc: Jiri Olsa Cc: Kan Liang Cc: Peter Zijlstra Link: https://lore.kernel.org/r/20240404175716.1225482-8-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/ui/browsers/annotate.c | 2 +- tools/perf/util/annotate.c | 6 +++--- tools/perf/util/annotate.h | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index 032642a0b4b6d..0e16c268e3290 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -49,7 +49,7 @@ static int ui_browser__jumps_percent_color(struct ui_browser *browser, int nr, b if (current && (!browser->use_navkeypressed || browser->navkeypressed)) return HE_COLORSET_SELECTED; - if (nr == notes->max_jump_sources) + if (nr == notes->src->max_jump_sources) return HE_COLORSET_TOP; if (nr > 1) return HE_COLORSET_MEDIUM; diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 0be744bb529cb..1fd51856d78ff 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -1373,8 +1373,8 @@ annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym) if (target == NULL) continue; - if (++target->jump_sources > notes->max_jump_sources) - notes->max_jump_sources = target->jump_sources; + if (++target->jump_sources > notes->src->max_jump_sources) + notes->src->max_jump_sources = target->jump_sources; } } @@ -1432,7 +1432,7 @@ annotation__init_column_widths(struct annotation *notes, struct symbol *sym) notes->src->widths.addr = notes->src->widths.target = notes->src->widths.min_addr = hex_width(symbol__size(sym)); notes->src->widths.max_addr = hex_width(sym->end); - notes->src->widths.jumps = width_jumps(notes->max_jump_sources); + notes->src->widths.jumps = width_jumps(notes->src->max_jump_sources); notes->src->widths.max_ins_name = annotation__max_ins_name(notes); } diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h index 402ae774426bb..382705311d288 100644 --- a/tools/perf/util/annotate.h +++ b/tools/perf/util/annotate.h @@ -250,6 +250,8 @@ struct cyc_hist { * @nr_entries: Number of annotated_line in the source list. * @nr_asm_entries: Number of annotated_line with actual asm instruction in the * source list. + * @max_jump_sources: Maximum number of jump instructions targeting to the same + * instruction. * @widths: Precalculated width of each column in the TUI output. * * disasm_lines are allocated, percentages calculated and all sorted by percentage @@ -265,6 +267,7 @@ struct annotated_source { int nr_histograms; int nr_entries; int nr_asm_entries; + int max_jump_sources; struct { u8 addr; u8 jumps; @@ -309,7 +312,6 @@ struct annotated_branch { struct LOCKABLE annotation { u64 start; int nr_events; - int max_jump_sources; struct annotated_source *src; struct annotated_branch *branch; }; -- 2.30.2