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