Re: [PATCH v3 1/5] perf util: Cleanup and refactor block info functions

From: Jiri Olsa
Date: Wed Oct 23 2019 - 07:37:13 EST


On Tue, Oct 22, 2019 at 04:07:06PM +0800, Jin Yao wrote:

SNIP

>
> -static int filter_cb(struct hist_entry *he, void *arg __maybe_unused)
> -{
> - /* Skip the calculation of column length in output_resort */
> - he->filtered = true;
> - return 0;
> -}

please move this change into separate patch and explain in changelog
why this is necessary

thanks,
jirka

> -
> static void hists__precompute(struct hists *hists)
> {
> struct rb_root_cached *root;
> @@ -792,8 +695,11 @@ static void hists__precompute(struct hists *hists)
> he = rb_entry(next, struct hist_entry, rb_node_in);
> next = rb_next(&he->rb_node_in);
>
> - if (compute == COMPUTE_CYCLES)
> - process_block_per_sym(he);
> + if (compute == COMPUTE_CYCLES) {
> + bh = container_of(he, struct block_hist, he);
> + init_block_hist(bh);
> + block_info__process_sym(he, bh, NULL, 0);
> + }
>
> data__for_each_file_new(i, d) {
> pair = get_pair_data(he, d);
> @@ -812,16 +718,18 @@ static void hists__precompute(struct hists *hists)
> compute_wdiff(he, pair);
> break;
> case COMPUTE_CYCLES:
> - process_block_per_sym(pair);
> - bh = container_of(he, struct block_hist, he);
> pair_bh = container_of(pair, struct block_hist,
> he);
> + init_block_hist(pair_bh);
> + block_info__process_sym(pair, pair_bh, NULL, 0);
> +
> + bh = container_of(he, struct block_hist, he);
>
> if (bh->valid && pair_bh->valid) {
> block_hists_match(&bh->block_hists,
> &pair_bh->block_hists);
> - hists__output_resort_cb(&pair_bh->block_hists,
> - NULL, filter_cb);
> + hists__output_resort(&pair_bh->block_hists,
> + NULL);
> }
> break;
> default:

SNIP

> diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
> index 679a1d75090c..a7fa061987e4 100644
> --- a/tools/perf/util/hist.c
> +++ b/tools/perf/util/hist.c
> @@ -18,6 +18,7 @@
> #include "srcline.h"
> #include "symbol.h"
> #include "thread.h"
> +#include "block-info.h"
> #include "ui/progress.h"
> #include <errno.h>
> #include <math.h>
> @@ -80,6 +81,8 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)
> int symlen;
> u16 len;
>
> + if (h->block_info)
> + return;
> /*
> * +4 accounts for '[x] ' priv level info
> * +2 accounts for 0x prefix on raw addresses

SNIP