I applied this one, no unnecessary parsing of cpuid done at each
jump->target arrow rendering, much better, thanks!

One thing for a follow up patch:

We have this when the cursor is at a jump instruction:

        │      ┌──test   %ecx,%ecx
->     │      ├──je     714cf
        │      │  mov    LINES+0xb40,%edx
        │      │  test   %edx,%edx
        │      │↓ je     71580
        │714cf:└─→mov    LINES+0x10c8,%eax

But if we go up a line, to that "test" instruction, we get:

->     │         test   %ecx,%ecx
        │       ↓ je     714cf
        │         mov    LINES+0xb40,%edx
        │         test   %edx,%edx
        │       ↓ je     71580
        │714cf:   mov    LINES+0x10c8,%eax

I suggest that this be changed to:

->     │       ┌─test   %ecx,%ecx
        │       ↓ je     714cf
        │         mov    LINES+0xb40,%edx
        │         test   %edx,%edx
        │       ↓ je     71580
        │714cf:   mov    LINES+0x10c8,%eax

I.e. even before going to the jump instruction line with the cursor, we
would see the fused instructions.

To do that perhaps we should improve annotate_browser__draw_current_jump
to improve that part that looks for is_valid_jump() to consider
instructions that could be fused with jumps for the machine where the
perf data came from, etc.

But the current situation is better already, thanks for your work,
applied!

- Arnaldo

I will investigate how to do the follow-up patch.

Thanks
Jin Yao

Reply via email to