perf annotate: Replace symbol__alloc_hists() with symbol__hists()
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 24 May 2018 20:33:18 +0000 (17:33 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 4 Jun 2018 13:28:52 +0000 (10:28 -0300)
Its a bit shorter, so ditch the old symbol__alloc_hists() function.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-m7tienxk7dijh5ln62yln1m9@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-top.c
tools/perf/ui/browsers/annotate.c
tools/perf/util/annotate.c
tools/perf/util/annotate.h

index bc71e899096da47be460699f13cf76bbd59a6895..04fe04885e99fad72063b3a281a30e33661f298e 100644 (file)
@@ -123,14 +123,9 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
        }
 
        notes = symbol__annotation(sym);
-       if (notes->src != NULL) {
-               pthread_mutex_lock(&notes->lock);
-               goto out_assign;
-       }
-
        pthread_mutex_lock(&notes->lock);
 
-       if (symbol__alloc_hist(sym) < 0) {
+       if (!symbol__hists(sym, top->evlist->nr_entries)) {
                pthread_mutex_unlock(&notes->lock);
                pr_err("Not enough memory for annotating '%s' symbol!\n",
                       sym->name);
@@ -140,7 +135,6 @@ static int perf_top__parse_source(struct perf_top *top, struct hist_entry *he)
 
        err = symbol__annotate(sym, map, evsel, 0, NULL);
        if (err == 0) {
-out_assign:
                top->sym_filter_entry = he;
        } else {
                char msg[BUFSIZ];
index 8be40fa903aac431acfae9669a90e6ebce1d2f2d..3bfe17e176fe9ff2dd1944327dd990a6a742d158 100644 (file)
@@ -410,7 +410,7 @@ static bool annotate_browser__callq(struct annotate_browser *browser,
        notes = symbol__annotation(dl->ops.target.sym);
        pthread_mutex_lock(&notes->lock);
 
-       if (notes->src == NULL && symbol__alloc_hist(dl->ops.target.sym) < 0) {
+       if (!symbol__hists(dl->ops.target.sym, evsel->evlist->nr_entries)) {
                pthread_mutex_unlock(&notes->lock);
                ui__warning("Not enough memory for annotating '%s' symbol!\n",
                            dl->ops.target.sym->name);
index 7c194b04a2da35980386648b4c0d379afd63ba49..bcd5d3e17b854b4123800d914605dda05a17bf6c 100644 (file)
@@ -689,7 +689,7 @@ static struct annotated_source *annotated_source__new(void)
        return src;
 }
 
-static void annotated_source__delete(struct annotated_source *src)
+static __maybe_unused void annotated_source__delete(struct annotated_source *src)
 {
        if (src == NULL)
                return;
@@ -729,23 +729,6 @@ static int annotated_source__alloc_histograms(struct annotated_source *src,
        return src->histograms ? 0 : -1;
 }
 
-int symbol__alloc_hist(struct symbol *sym)
-{
-       size_t size = symbol__size(sym);
-       struct annotation *notes = symbol__annotation(sym);
-
-       notes->src = annotated_source__new();
-       if (notes->src == NULL)
-               return -1;
-
-       if (annotated_source__alloc_histograms(notes->src, size, symbol_conf.nr_events) < 0) {
-               annotated_source__delete(notes->src);
-               notes->src = NULL;
-               return -1;
-       }
-       return 0;
-}
-
 /* The cycles histogram is lazily allocated. */
 static int symbol__alloc_hist_cycles(struct symbol *sym)
 {
@@ -868,7 +851,7 @@ alloc_cycles_hist:
        return notes->src->cycles_hist;
 }
 
-static struct annotated_source *symbol__hists(struct symbol *sym, int nr_hists)
+struct annotated_source *symbol__hists(struct symbol *sym, int nr_hists)
 {
        struct annotation *notes = symbol__annotation(sym);
 
index 2a73f9084930e0fdef900db698731973e43930f1..7ad503fbff74ff0d857c480ba72cb34d1b8f867a 100644 (file)
@@ -292,7 +292,7 @@ int addr_map_symbol__account_cycles(struct addr_map_symbol *ams,
 int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample,
                                 struct perf_evsel *evsel, u64 addr);
 
-int symbol__alloc_hist(struct symbol *sym);
+struct annotated_source *symbol__hists(struct symbol *sym, int nr_hists);
 void symbol__annotate_zero_histograms(struct symbol *sym);
 
 int symbol__annotate(struct symbol *sym, struct map *map,