On Wed, Feb 10, 2016 at 01:11:19PM +0100, Jiri Olsa wrote:
> On Fri, Feb 05, 2016 at 10:01:45PM +0900, Namhyung Kim wrote:
> 
> SNIP
> 
> > +                   /* force to go to sibling in the hierarchy */
> > +                   saved_unfolded = h->unfolded;
> > +                   h->unfolded = false;
> > +
> > +                   nd = rb_hierarchy_next(&h->rb_node);
> > +                   h->unfolded = saved_unfolded;
> > +           }
> > +   }
> > +
> > +   /* resort output (top-level entries only) */
> > +   nd = rb_first(&hists->entries);
> > +   while (nd) {
> > +           struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node);
> > +
> > +           nd = rb_next(nd);
> > +           rb_erase(&h->rb_node, &hists->entries);
> > +
> > +           __hists__insert_output_entry(&tmp, h, 0, false);
> > +   }
> 
> what's the purpose of this resort? the only affect I see
> is to recalculate callchains

Filter can change parent entries' period so we need to resort after
applying a filter and this is why I pass 'false' for the
'use_callchain' param.

For example, let's say there're two top-level entries: A and B.  The A
has 40% overhead and the B has 30%.  But after applying filter the A
can have 10% and the B can have 15%.  So output should be changed to
put the B before the A.

I'll add a comment for this.

Thanks,
Namhyung

Reply via email to