Index: src/runtime/lookup-asm/lookup-asm-x86_64-win64.S ================================================================== --- src/runtime/lookup-asm/lookup-asm-x86_64-win64.S +++ src/runtime/lookup-asm/lookup-asm-x86_64-win64.S @@ -13,84 +13,84 @@ * file. */ #include "config.h" -.intel_syntax noprefix - .globl objc_msg_lookup .globl objc_msg_lookup_stret .globl objc_msg_lookup_super .globl objc_msg_lookup_super_stret .section .text .macro generate_lookup name not_found \name: - test rcx, rcx - jz short ret_nil - - test cl, 1 - jnz short .Ltagged_pointer_\name - - mov r8, [rcx] - mov r8, [r8+56] + testq %rcx, %rcx + jz ret_nil + + testb $1, %cl + jnz .Ltagged_pointer_\name + + movq (%rcx), %r8 + movq 56(%r8), %r8 .Lmain_\name: - mov r10, rcx - mov r11, rdx + movq %rcx, %r10 + movq %rdx, %r11 - mov rax, [rdx] - movzx ecx, ah - movzx edx, al + movq (%rdx), %rax + movzbl %ah, %ecx + movzbl %al, %edx #ifdef OF_SELUID24 - shr eax, 16 + shrl $16, %eax - mov r8, [r8+rax*8] + movq (%r8,%rax,8), %r8 #endif - mov r8, [r8+rcx*8] - mov rax, [r8+rdx*8] + movq (%r8,%rcx,8), %r8 + movq (%r8,%rdx,8), %rax - test rax, rax - jz short 0f + testq %rax, %rax + jz 0f ret 0: - mov rcx, r10 - mov rdx, r11 + movq %r10, %rcx + movq %r11, %rdx jmp \not_found .Ltagged_pointer_\name: - xor rcx, objc_tagged_pointer_secret - and cl, 0xE - movzx r8, cl - - mov r8, [objc_tagged_pointer_classes+r8*4] - mov r8, [r8+56] - - jmp short .Lmain_\name + movq objc_tagged_pointer_secret(%rip), %rax + xorq (%rax), %rcx + andb $0xE, %cl + movzbl %cl, %r8d + + movq objc_tagged_pointer_classes(%rip), %rax + movq (%rax,%r8,4), %r8 + movq 56(%r8), %r8 + + jmp .Lmain_\name .endm .macro generate_lookup_super name lookup \name: - mov r8, rcx - mov rcx, [rcx] - test rcx, rcx - jz short ret_nil - - mov r8, [r8+8] - mov r8, [r8+56] - jmp short .Lmain_\lookup + movq %rcx, %r8 + movq (%rcx), %rcx + testq %rcx, %rcx + jz ret_nil + + movq 8(%r8), %r8 + movq 56(%r8), %r8 + jmp .Lmain_\lookup .endm generate_lookup objc_msg_lookup objc_method_not_found generate_lookup objc_msg_lookup_stret objc_method_not_found_stret generate_lookup_super objc_msg_lookup_super objc_msg_lookup generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret ret_nil: - mov rax, offset nil_method + movq nil_method(%rip), %rax ret nil_method: - xor rax, rax + xorq %rax, %rax ret