Skip to content

Commit

Permalink
perf hists: Exchange order of comparing items when collapsing hists
Browse files Browse the repository at this point in the history
When comparing entries for collapsing put the given entry first, and
then the iterated entry.  This is not the case of hist_entry__cmp() when
called if given sort keys don't require collapsing.  So change the order
for the sake of consistency.  It will be required for matching and/or
linking multiple hist entries.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1355128197-18193-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Namhyung Kim authored and Arnaldo Carvalho de Melo committed Jan 24, 2013
1 parent 203e04c commit 9afcf93
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion tools/perf/builtin-diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ static void insert_hist_entry_by_name(struct rb_root *root,
while (*p != NULL) {
parent = *p;
iter = rb_entry(parent, struct hist_entry, rb_node);
if (hist_entry__cmp(he, iter) < 0)
if (hist_entry__cmp(iter, he) < 0)
p = &(*p)->rb_left;
else
p = &(*p)->rb_right;
Expand Down
12 changes: 9 additions & 3 deletions tools/perf/util/hist.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,13 @@ static struct hist_entry *add_hist_entry(struct hists *hists,
parent = *p;
he = rb_entry(parent, struct hist_entry, rb_node_in);

cmp = hist_entry__cmp(entry, he);
/*
* Make sure that it receives arguments in a same order as
* hist_entry__collapse() so that we can use an appropriate
* function when searching an entry regardless which sort
* keys were used.
*/
cmp = hist_entry__cmp(he, entry);

if (!cmp) {
he_stat__add_period(&he->stat, period);
Expand Down Expand Up @@ -729,7 +735,7 @@ static struct hist_entry *hists__add_dummy_entry(struct hists *hists,
parent = *p;
he = rb_entry(parent, struct hist_entry, rb_node);

cmp = hist_entry__cmp(pair, he);
cmp = hist_entry__cmp(he, pair);

if (!cmp)
goto out;
Expand Down Expand Up @@ -759,7 +765,7 @@ static struct hist_entry *hists__find_entry(struct hists *hists,

while (n) {
struct hist_entry *iter = rb_entry(n, struct hist_entry, rb_node);
int64_t cmp = hist_entry__cmp(he, iter);
int64_t cmp = hist_entry__cmp(iter, he);

if (cmp < 0)
n = n->rb_left;
Expand Down

0 comments on commit 9afcf93

Please sign in to comment.