On 10/23/2019 7:37 PM, Jiri Olsa wrote:
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


Got it. I will move this change into a separate patch.

Thanks
Jin Yao

-
  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