Skip to content

Commit

Permalink
perf hists: Remove needless global col lenght calcs
Browse files Browse the repository at this point in the history
To support multiple events we need to do these calcs per 'struct hists'
instance, and it turns out we already do that at:

	__hists__add_entry
		hists__inc_nr_entries
			hists__calc_col_len

for all the unfiltered hist_entry instances we stash in the rb tree, so
trow away the dead code.

Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Arnaldo Carvalho de Melo committed Mar 6, 2011
1 parent a03f35c commit d7603d5
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 58 deletions.
57 changes: 1 addition & 56 deletions tools/perf/util/event.c
Original file line number Diff line number Diff line change
Expand Up @@ -424,33 +424,6 @@ int perf_event__synthesize_kernel_mmap(perf_event__handler_t process,
return err;
}

static void thread__comm_adjust(struct thread *self, struct hists *hists)
{
char *comm = self->comm;

if (!symbol_conf.col_width_list_str && !symbol_conf.field_sep &&
(!symbol_conf.comm_list ||
strlist__has_entry(symbol_conf.comm_list, comm))) {
u16 slen = strlen(comm);

if (hists__new_col_len(hists, HISTC_COMM, slen))
hists__set_col_len(hists, HISTC_THREAD, slen + 6);
}
}

static int thread__set_comm_adjust(struct thread *self, const char *comm,
struct hists *hists)
{
int ret = thread__set_comm(self, comm);

if (ret)
return ret;

thread__comm_adjust(self, hists);

return 0;
}

int perf_event__process_comm(union perf_event *event,
struct perf_sample *sample __used,
struct perf_session *session)
Expand All @@ -459,8 +432,7 @@ int perf_event__process_comm(union perf_event *event,

dump_printf(": %s:%d\n", event->comm.comm, event->comm.tid);

if (thread == NULL || thread__set_comm_adjust(thread, event->comm.comm,
&session->hists)) {
if (thread == NULL || thread__set_comm(thread, event->comm.comm)) {
dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n");
return -1;
}
Expand Down Expand Up @@ -760,18 +732,6 @@ void thread__find_addr_location(struct thread *self,
al->sym = NULL;
}

static void dso__calc_col_width(struct dso *self, struct hists *hists)
{
if (!symbol_conf.col_width_list_str && !symbol_conf.field_sep &&
(!symbol_conf.dso_list ||
strlist__has_entry(symbol_conf.dso_list, self->name))) {
u16 slen = dso__name_len(self);
hists__new_col_len(hists, HISTC_DSO, slen);
}

self->slen_calculated = 1;
}

int perf_event__preprocess_sample(const union perf_event *event,
struct perf_session *session,
struct addr_location *al,
Expand Down Expand Up @@ -817,23 +777,8 @@ int perf_event__preprocess_sample(const union perf_event *event,
strlist__has_entry(symbol_conf.dso_list,
al->map->dso->long_name)))))
goto out_filtered;
/*
* We have to do this here as we may have a dso with no symbol
* hit that has a name longer than the ones with symbols
* sampled.
*/
if (!sort_dso.elide && !al->map->dso->slen_calculated)
dso__calc_col_width(al->map->dso, &session->hists);

al->sym = map__find_symbol(al->map, al->addr, filter);
} else {
const unsigned int unresolved_col_width = BITS_PER_LONG / 4;

if (hists__col_len(&session->hists, HISTC_DSO) < unresolved_col_width &&
!symbol_conf.col_width_list_str && !symbol_conf.field_sep &&
!symbol_conf.dso_list)
hists__set_col_len(&session->hists, HISTC_DSO,
unresolved_col_width);
}

if (symbol_conf.sym_list && al->sym &&
Expand Down
9 changes: 9 additions & 0 deletions tools/perf/util/hist.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ static void hists__calc_col_len(struct hists *self, struct hist_entry *h)

if (h->ms.sym)
hists__new_col_len(self, HISTC_SYMBOL, h->ms.sym->namelen);
else {
const unsigned int unresolved_col_width = BITS_PER_LONG / 4;

if (hists__col_len(self, HISTC_DSO) < unresolved_col_width &&
!symbol_conf.col_width_list_str && !symbol_conf.field_sep &&
!symbol_conf.dso_list)
hists__set_col_len(self, HISTC_DSO,
unresolved_col_width);
}

len = thread__comm_len(h->thread);
if (hists__new_col_len(self, HISTC_COMM, len))
Expand Down
1 change: 0 additions & 1 deletion tools/perf/util/symbol.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ struct dso *dso__new(const char *name)
dso__set_short_name(self, self->name);
for (i = 0; i < MAP__NR_TYPES; ++i)
self->symbols[i] = self->symbol_names[i] = RB_ROOT;
self->slen_calculated = 0;
self->origin = DSO__ORIG_NOT_FOUND;
self->loaded = 0;
self->sorted_by_name = 0;
Expand Down
1 change: 0 additions & 1 deletion tools/perf/util/symbol.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ struct dso {
struct rb_root symbol_names[MAP__NR_TYPES];
enum dso_kernel_type kernel;
u8 adjust_symbols:1;
u8 slen_calculated:1;
u8 has_build_id:1;
u8 hit:1;
u8 annotate_warned:1;
Expand Down

0 comments on commit d7603d5

Please sign in to comment.