lkml.org 
[lkml]   [2023]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 5/5] perf annotate: Move offsets to annotated_source
    On Thu, Nov 2, 2023 at 3:27 PM Namhyung Kim <namhyung@kernel.org> wrote:
    >
    > The offsets array keeps pointers to struct annotation_line which is
    > available in the annotated_source. Let's move it to there.
    >
    > Signed-off-by: Namhyung Kim <namhyung@kernel.org>

    Reviewed-by: Ian Rogers <irogers@google.com>

    Thanks,
    Ian

    > ---
    > tools/perf/ui/browsers/annotate.c | 4 ++--
    > tools/perf/util/annotate.c | 18 +++++++++---------
    > tools/perf/util/annotate.h | 2 +-
    > 3 files changed, 12 insertions(+), 12 deletions(-)
    >
    > diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
    > index 1b42db70c998..163f916fff68 100644
    > --- a/tools/perf/ui/browsers/annotate.c
    > +++ b/tools/perf/ui/browsers/annotate.c
    > @@ -188,7 +188,7 @@ static void annotate_browser__draw_current_jump(struct ui_browser *browser)
    > * name right after the '<' token and probably treating this like a
    > * 'call' instruction.
    > */
    > - target = notes->offsets[cursor->ops.target.offset];
    > + target = notes->src->offsets[cursor->ops.target.offset];
    > if (target == NULL) {
    > ui_helpline__printf("WARN: jump target inconsistency, press 'o', notes->offsets[%#x] = NULL\n",
    > cursor->ops.target.offset);
    > @@ -1006,6 +1006,6 @@ int symbol__tui_annotate(struct map_symbol *ms, struct evsel *evsel,
    >
    > out_free_offsets:
    > if(not_annotated)
    > - zfree(&notes->offsets);
    > + zfree(&notes->src->offsets);
    > return ret;
    > }
    > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
    > index ee7b8e1848a8..8ab2e1cf63ea 100644
    > --- a/tools/perf/util/annotate.c
    > +++ b/tools/perf/util/annotate.c
    > @@ -1075,7 +1075,7 @@ static unsigned annotation__count_insn(struct annotation *notes, u64 start, u64
    > u64 offset;
    >
    > for (offset = start; offset <= end; offset++) {
    > - if (notes->offsets[offset])
    > + if (notes->src->offsets[offset])
    > n_insn++;
    > }
    > return n_insn;
    > @@ -1105,7 +1105,7 @@ static void annotation__count_and_fill(struct annotation *notes, u64 start, u64
    > return;
    >
    > for (offset = start; offset <= end; offset++) {
    > - struct annotation_line *al = notes->offsets[offset];
    > + struct annotation_line *al = notes->src->offsets[offset];
    >
    > if (al && al->cycles && al->cycles->ipc == 0.0) {
    > al->cycles->ipc = ipc;
    > @@ -1142,7 +1142,7 @@ void annotation__compute_ipc(struct annotation *notes, size_t size)
    > if (ch && ch->cycles) {
    > struct annotation_line *al;
    >
    > - al = notes->offsets[offset];
    > + al = notes->src->offsets[offset];
    > if (al && al->cycles == NULL) {
    > al->cycles = zalloc(sizeof(*al->cycles));
    > if (al->cycles == NULL)
    > @@ -2783,7 +2783,7 @@ void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym)
    > return;
    >
    > for (offset = 0; offset < size; ++offset) {
    > - struct annotation_line *al = notes->offsets[offset];
    > + struct annotation_line *al = notes->src->offsets[offset];
    > struct disasm_line *dl;
    >
    > dl = disasm_line(al);
    > @@ -2791,7 +2791,7 @@ void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym)
    > if (!disasm_line__is_valid_local_jump(dl, sym))
    > continue;
    >
    > - al = notes->offsets[dl->ops.target.offset];
    > + al = notes->src->offsets[dl->ops.target.offset];
    >
    > /*
    > * FIXME: Oops, no jump target? Buggy disassembler? Or do we
    > @@ -2830,7 +2830,7 @@ void annotation__set_offsets(struct annotation *notes, s64 size)
    > * E.g. copy_user_generic_unrolled
    > */
    > if (al->offset < size)
    > - notes->offsets[al->offset] = al;
    > + notes->src->offsets[al->offset] = al;
    > } else
    > al->idx_asm = -1;
    > }
    > @@ -3263,8 +3263,8 @@ int symbol__annotate2(struct map_symbol *ms, struct evsel *evsel,
    > size_t size = symbol__size(sym);
    > int nr_pcnt = 1, err;
    >
    > - notes->offsets = zalloc(size * sizeof(struct annotation_line *));
    > - if (notes->offsets == NULL)
    > + notes->src->offsets = zalloc(size * sizeof(struct annotation_line *));
    > + if (notes->src->offsets == NULL)
    > return ENOMEM;
    >
    > if (evsel__is_group_event(evsel))
    > @@ -3290,7 +3290,7 @@ int symbol__annotate2(struct map_symbol *ms, struct evsel *evsel,
    > return 0;
    >
    > out_free_offsets:
    > - zfree(&notes->offsets);
    > + zfree(&notes->src->offsets);
    > return err;
    > }
    >
    > diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
    > index c51ceb857bd6..44af7e71a204 100644
    > --- a/tools/perf/util/annotate.h
    > +++ b/tools/perf/util/annotate.h
    > @@ -272,6 +272,7 @@ struct annotated_source {
    > int nr_histograms;
    > size_t sizeof_sym_hist;
    > struct sym_hist *histograms;
    > + struct annotation_line **offsets;
    > int nr_entries;
    > int nr_asm_entries;
    > u16 max_line_len;
    > @@ -289,7 +290,6 @@ struct annotated_branch {
    > struct LOCKABLE annotation {
    > u64 start;
    > struct annotation_options *options;
    > - struct annotation_line **offsets;
    > int nr_events;
    > int max_jump_sources;
    > struct {
    > --
    > 2.42.0.869.gea05f2083d-goog
    >

    \
     
     \ /
      Last update: 2023-11-03 00:04    [W:7.357 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site