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

