perf annotate: Move 'max_jump_sources' struct to 'struct annotated_source'
authorNamhyung Kim <namhyung@kernel.org>
Thu, 4 Apr 2024 17:57:14 +0000 (10:57 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 8 Apr 2024 20:43:20 +0000 (17:43 -0300)
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 <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240404175716.1225482-8-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/ui/browsers/annotate.c
tools/perf/util/annotate.c
tools/perf/util/annotate.h

index 032642a0b4b6d9bd84c676ed18af7bc91c070ec8..0e16c268e329053ff709c3624a652ee3c7405d93 100644 (file)
@@ -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;
index 0be744bb529cb99e991ac40281193d899cb9c4af..1fd51856d78ffef91a6a2db3086ecf28f898a418 100644 (file)
@@ -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);
 }
 
index 402ae774426bb6347b61288aae3e6785a02d5c49..382705311d288b73bbd63e8474d54fdd3bb7971e 100644 (file)
@@ -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;
 };