perf annotate browser: Align jump labels
Find out at browser startup the max width and use it when rendering jump labels on the screen. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-7dxjiwqb77wz6f5lc05e0i0x@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
@@ -31,6 +31,7 @@ struct annotate_browser {
|
|||||||
bool hide_src_code;
|
bool hide_src_code;
|
||||||
bool use_offset;
|
bool use_offset;
|
||||||
bool searching_backwards;
|
bool searching_backwards;
|
||||||
|
u8 offset_width;
|
||||||
char search_bf[128];
|
char search_bf[128];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -92,10 +93,17 @@ static void annotate_browser__write(struct ui_browser *self, void *entry, int ro
|
|||||||
if (!ab->use_offset)
|
if (!ab->use_offset)
|
||||||
addr += ab->start;
|
addr += ab->start;
|
||||||
|
|
||||||
if (bdl->jump_target || !ab->use_offset)
|
if (!ab->use_offset) {
|
||||||
printed = scnprintf(bf, sizeof(bf), " %" PRIx64 ":", addr);
|
printed = scnprintf(bf, sizeof(bf), "%" PRIx64 ":", addr);
|
||||||
else
|
} else {
|
||||||
printed = scnprintf(bf, sizeof(bf), " ");
|
if (bdl->jump_target) {
|
||||||
|
printed = scnprintf(bf, sizeof(bf), "%*" PRIx64 ":",
|
||||||
|
ab->offset_width, addr);
|
||||||
|
} else {
|
||||||
|
printed = scnprintf(bf, sizeof(bf), "%*s ",
|
||||||
|
ab->offset_width, " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (change_color)
|
if (change_color)
|
||||||
color = ui_browser__set_color(self, HE_COLORSET_ADDR);
|
color = ui_browser__set_color(self, HE_COLORSET_ADDR);
|
||||||
@@ -687,6 +695,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map, int evidx,
|
|||||||
|
|
||||||
annotate_browser__mark_jump_targets(&browser, size);
|
annotate_browser__mark_jump_targets(&browser, size);
|
||||||
|
|
||||||
|
browser.offset_width = hex_width(size);
|
||||||
browser.b.nr_entries = browser.nr_entries;
|
browser.b.nr_entries = browser.nr_entries;
|
||||||
browser.b.entries = ¬es->src->source,
|
browser.b.entries = ¬es->src->source,
|
||||||
browser.b.width += 18; /* Percentage */
|
browser.b.width += 18; /* Percentage */
|
||||||
|
@@ -148,3 +148,13 @@ int readn(int fd, void *buf, size_t n)
|
|||||||
|
|
||||||
return buf - buf_start;
|
return buf - buf_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t hex_width(u64 v)
|
||||||
|
{
|
||||||
|
size_t n = 1;
|
||||||
|
|
||||||
|
while ((v >>= 4))
|
||||||
|
++n;
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
@@ -265,4 +265,6 @@ bool is_power_of_2(unsigned long n)
|
|||||||
return (n != 0 && ((n & (n - 1)) == 0));
|
return (n != 0 && ((n & (n - 1)) == 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t hex_width(u64 v);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user