Re: [PATCH 23/28] perf tools: Factor out hist_entry_iter code

Jiri Olsa
2014-01-11T16:24:32Z

On Wed, Jan 08, 2014 at 05:46:28PM +0900, Namhyung Kim wrote:
> Now the hist_entry_iter code will be shared with perf top code base.
> So move it to util/hist.c and do some necessary cleanups and renames.

factoring code from this very patchset.. looks like it could be easily
squashed with:
perf tools: Introduce struct hist_entry_iter

jirka

>
> Cc: Arun Sharma <asharma@fb.com>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/builtin-report.c | 468 +-------------------------------------------
> tools/perf/util/hist.c | 441 +++++++++++++++++++++++++++++++++++++++++
> tools/perf/util/hist.h | 30 +++
> 3 files changed, 477 insertions(+), 462 deletions(-)
>

SNIP

> - err = iter->prepare_entry(iter, al);
> - if (err)
> - goto out;
> -
> - err = iter->add_single_entry(iter, al);
> - if (err)
> - goto out;
> -
> - while (iter->next_entry(iter, al)) {
> - err = iter->add_next_entry(iter, al);
> - if (err)
> - break;
> - }
> -
> -out:
> - err2 = iter->finish_entry(iter, al);
> - if (!err)
> - err = err2;
> -
> - return err;
> -}
> -
> static int process_sample_event(struct perf_tool *tool,
> union perf_event *event,
> struct perf_sample *sample,
> @@ -555,23 +103,19 @@ static int process_sample_event(struct perf_tool *tool,
> return 0;
>
> if (sort__mode == SORT_MODE__BRANCH)
> - iter = &branch_iter;
> + iter = &hist_iter_branch;
> else if (rep->mem_mode == 1)
> - iter = &mem_iter;
> + iter = &hist_iter_mem;
> else if (symbol_conf.cumulate_callchain)
> - iter = &cumulative_iter;
> + iter = &hist_iter_cumulative;
> else
> - iter = &normal_iter;
> + iter = &hist_iter_normal;

looks like we could add 'struct hist_entry_iter_ops' and ops
pointer in 'struct hist_entry_iter' ...just feel better ;-)

jirka