perf annotate browser: Add visual cues on jump lines
Commit-ID: 51a0d455b5f44cb4680e0a89f99860b669e40d0f Gitweb: http://git.kernel.org/tip/51a0d455b5f44cb4680e0a89f99860b669e40d0f Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 20 Apr 2012 15:40:20 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Fri, 20 Apr 2012 15:40:20 -0300
perf annotate browser: Add visual cues on jump lines
Using up/down arrows just before the instruction, replacing the actual chars with approximations to avoid mail encoding snafus:
avtab_search_node
0.00 | push %rbp
0.00 | mov %rsp,%rbp
0.00 | callq mcount
0.00 | movzwl 0x6(%rsi),%edx
0.00 | and $0x7fff,%dx
0.00 | test %rdi,%rdi
0.00 | v jne 20
0.00 | 17: xor %eax,%eax
0.00 | 19: leaveq
0.00 | retq
0.00 | nopl 0x0(%rax,%rax,1)
0.00 | 20: mov (%rdi),%rax
0.00 | test %rax,%rax
0.00 | ^ je 17
0.00 | movzwl (%rsi),%ecx
0.00 | movzwl 0x2(%rsi),%r9d
0.00 | movzwl 0x4(%rsi),%r8d
0.00 | movzwl %cx,%esi
0.00 | movzwl %r9w,%r10d
0.00 | shl $0x9,%esi
0.00 | lea (%rsi,%r10,4),%esi
0.00 | lea (%r8,%rsi,1),%esi
0.00 | and 0x10(%rdi),%si
0.00 | movzwl %si,%esi
0.00 | mov (%rax,%rsi,8),%rax
0.00 | test %rax,%rax
0.00 | ^ je 19
0.00 | nopw 0x0(%rax,%rax,1)
0.00 | 60: cmp %cx,(%rax)
0.00 | v jne 7e
0.00 | cmp %r9w,0x2(%rax)
0.00 | v jne 7e
0.00 | cmp %r8w,0x4(%rax)
0.00 | v jne 79
0.00 | test %dx,0x6(%rax)
0.00 | ^ jne 19
0.00 | 79: cmp %r8w,0x4(%rax)
93.04 | 7e:^ ja 17
2.53 | mov 0x10(%rax),%rax
4.43 | test %rax,%rax
0.00 | ^ jne 60
0.00 | leaveq
0.00 | retqNext low hanging fruit is to use left arrow for retqs, then work on clearling marking loops.
Requested-by Linus Torvalds <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Linus Torvalds <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/ui/browsers/annotate.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
tools/perf/ui/browsers/annotate.c +12 -1
@@ -113,9 +113,20 @@ static void annotate_browser__write(struct ui_browser *self, void *entry, int roif (change_color)ui_browser__set_color (self, color);if (dl->ins && dl->ins->ops->scnprintf) { +if (ins__is_jump (dl->ins)) { +bool fwd = dl->ops.target > (u64 )dl->offset; + +SLsmg_set_char_set (1 ); +SLsmg_write_char (fwd ?SLSMG_DARROW_CHAR : +SLSMG_UARROW_CHAR ); +SLsmg_set_char_set (0 ); +SLsmg_write_char (' ' ); + }else { +slsmg_write_nstring (" " ,2 ); + } + dl->ins->ops->scnprintf (dl->ins, bf,sizeof (bf), &dl->ops, !ab->use_offset); -slsmg_write_nstring (" " ,2 ); printed +=2 ; }else scnprintf (bf,sizeof (bf)," %-6.6s %s" , dl->name, dl->ops.raw);