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

Reply via email to