Index: src/invocation/call-x86_64-elf.S ================================================================== --- src/invocation/call-x86_64-elf.S +++ src/invocation/call-x86_64-elf.S @@ -74,17 +74,19 @@ movq 24(%rdi), %rcx movq 16(%rdi), %rdx movq 8(%rdi), %rsi movq 0(%rdi), %rdi - movq -16(%rbp), %r11 + movq -8(%rbp), %r11 + movb 225(%r11), %r11b - cmpb $3, 225(%rdi) - je .jmp_r11 - cmpb $4, 225(%rdi) - je .jmp_r11 + cmpb $3, %r11b + je .jmp_into_method + cmpb $4, %r11b + je .jmp_into_method + movq -16(%rbp), %r11 call *%r11 .after_send: movq -8(%rbp), %rdi movq %rax, 48(%rdi) @@ -111,15 +113,16 @@ movq 8(%rdi), %rdi call objc_msg_lookup_stret@PLT jmp .after_lookup -.jmp_r11: +.jmp_into_method: + movq -16(%rbp), %r11 jmp *%r11 .pop_long_double: fstpt 192(%rdi) jmp .return #ifdef OF_LINUX .section .note.GNU-stack, "", %progbits #endif