perf annotate: Move some source code related fields from 'struct annotation' to 'struct annotated_source'
[ Upstream commit0aae4c99c5] Some fields in the 'struct annotation' are only used with 'struct annotated_source' so better to be moved there in order to reduce memory consumption for other symbols. Reviewed-by: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: https://lore.kernel.org/r/20231103191907.54531-5-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Stable-dep-of:3ef4445807("perf report: Fix --total-cycles --stdio output error") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4ef032d899
commit
4c857dcf34
@@ -384,7 +384,7 @@ static bool annotate_browser__toggle_source(struct annotate_browser *browser)
|
||||
if (al->idx_asm < offset)
|
||||
offset = al->idx;
|
||||
|
||||
browser->b.nr_entries = notes->nr_entries;
|
||||
browser->b.nr_entries = notes->src->nr_entries;
|
||||
notes->options->hide_src_code = false;
|
||||
browser->b.seek(&browser->b, -offset, SEEK_CUR);
|
||||
browser->b.top_idx = al->idx - offset;
|
||||
@@ -402,7 +402,7 @@ static bool annotate_browser__toggle_source(struct annotate_browser *browser)
|
||||
if (al->idx_asm < offset)
|
||||
offset = al->idx_asm;
|
||||
|
||||
browser->b.nr_entries = notes->nr_asm_entries;
|
||||
browser->b.nr_entries = notes->src->nr_asm_entries;
|
||||
notes->options->hide_src_code = true;
|
||||
browser->b.seek(&browser->b, -offset, SEEK_CUR);
|
||||
browser->b.top_idx = al->idx_asm - offset;
|
||||
@@ -435,7 +435,7 @@ static void ui_browser__init_asm_mode(struct ui_browser *browser)
|
||||
{
|
||||
struct annotation *notes = browser__annotation(browser);
|
||||
ui_browser__reset_index(browser);
|
||||
browser->nr_entries = notes->nr_asm_entries;
|
||||
browser->nr_entries = notes->src->nr_asm_entries;
|
||||
}
|
||||
|
||||
static int sym_title(struct symbol *sym, struct map *map, char *title,
|
||||
@@ -860,7 +860,7 @@ show_help:
|
||||
browser->b.height,
|
||||
browser->b.index,
|
||||
browser->b.top_idx,
|
||||
notes->nr_asm_entries);
|
||||
notes->src->nr_asm_entries);
|
||||
}
|
||||
continue;
|
||||
case K_ENTER:
|
||||
@@ -991,8 +991,8 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,
|
||||
|
||||
ui_helpline__push("Press ESC to exit");
|
||||
|
||||
browser.b.width = notes->max_line_len;
|
||||
browser.b.nr_entries = notes->nr_entries;
|
||||
browser.b.width = notes->src->max_line_len;
|
||||
browser.b.nr_entries = notes->src->nr_entries;
|
||||
browser.b.entries = ¬es->src->source,
|
||||
browser.b.width += 18; /* Percentage */
|
||||
|
||||
|
||||
@@ -2825,19 +2825,20 @@ void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym)
|
||||
void annotation__set_offsets(struct annotation *notes, s64 size)
|
||||
{
|
||||
struct annotation_line *al;
|
||||
struct annotated_source *src = notes->src;
|
||||
|
||||
notes->max_line_len = 0;
|
||||
notes->nr_entries = 0;
|
||||
notes->nr_asm_entries = 0;
|
||||
src->max_line_len = 0;
|
||||
src->nr_entries = 0;
|
||||
src->nr_asm_entries = 0;
|
||||
|
||||
list_for_each_entry(al, ¬es->src->source, node) {
|
||||
list_for_each_entry(al, &src->source, node) {
|
||||
size_t line_len = strlen(al->line);
|
||||
|
||||
if (notes->max_line_len < line_len)
|
||||
notes->max_line_len = line_len;
|
||||
al->idx = notes->nr_entries++;
|
||||
if (src->max_line_len < line_len)
|
||||
src->max_line_len = line_len;
|
||||
al->idx = src->nr_entries++;
|
||||
if (al->offset != -1) {
|
||||
al->idx_asm = notes->nr_asm_entries++;
|
||||
al->idx_asm = src->nr_asm_entries++;
|
||||
/*
|
||||
* FIXME: short term bandaid to cope with assembly
|
||||
* routines that comes with labels in the same column
|
||||
|
||||
@@ -269,10 +269,13 @@ struct cyc_hist {
|
||||
* returns.
|
||||
*/
|
||||
struct annotated_source {
|
||||
struct list_head source;
|
||||
int nr_histograms;
|
||||
size_t sizeof_sym_hist;
|
||||
struct sym_hist *histograms;
|
||||
struct list_head source;
|
||||
size_t sizeof_sym_hist;
|
||||
struct sym_hist *histograms;
|
||||
int nr_histograms;
|
||||
int nr_entries;
|
||||
int nr_asm_entries;
|
||||
u16 max_line_len;
|
||||
};
|
||||
|
||||
struct annotated_branch {
|
||||
@@ -290,9 +293,6 @@ struct LOCKABLE annotation {
|
||||
struct annotation_line **offsets;
|
||||
int nr_events;
|
||||
int max_jump_sources;
|
||||
int nr_entries;
|
||||
int nr_asm_entries;
|
||||
u16 max_line_len;
|
||||
struct {
|
||||
u8 addr;
|
||||
u8 jumps;
|
||||
|
||||
Reference in New Issue
Block a user