Differences From Artifact [4e9c1edaaf]:
- File src/invocation/apple-call-x86_64.S — part of check-in [d0878b2eae] at 2017-09-11 20:32:29 on branch trunk — invoke-x86_64.m: Support for long double (user: js, size: 1668) [annotate] [blame] [check-ins using]
To Artifact [387ccf9ff7]:
- File
src/invocation/apple-call-x86_64.S
— part of check-in
[d6e5e6beb3]
at
2017-09-14 21:51:51
on branch trunk
— apple-call-x86_64.S: Add support for stret and jmp
Jumping is useful in case of forwarding, so that the return value does
not need to be put back into an OFInvocation and then from an
OFInvocation back into registers. (user: js, size: 1881) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | movq 40(%rdi), %r9 movq 32(%rdi), %r8 movq 24(%rdi), %rcx movq 16(%rdi), %rdx movq 8(%rdi), %rsi movq 0(%rdi), %rdi call _objc_msgSend movq -8(%rbp), %rdi movq %rax, 48(%rdi) movq %rdx, 56(%rdi) movdqa %xmm0, 64(%rdi) movdqa %xmm1, 80(%rdi) cmpb $2, 225(%rdi) je Lpop_long_double Lreturn: movq %rbp, %rsp popq %rbp ret Lfix_align: xorq %r11, %r11 pushq %r11 jmp Lfill_stack Lpop_long_double: fstpt 192(%rdi) jmp Lreturn | > > > > > > > > > > > > > > > > | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | movq 40(%rdi), %r9 movq 32(%rdi), %r8 movq 24(%rdi), %rcx movq 16(%rdi), %rdx movq 8(%rdi), %rsi movq 0(%rdi), %rdi movb 225(%rdi), %r11b cmpb $1, %r11b je Lcall_send_stret cmpb $3, %r11b je _objc_msgSend cmpb $4, %r11b je _objc_msgSend_stret call _objc_msgSend Lafter_send: movq -8(%rbp), %rdi movq %rax, 48(%rdi) movq %rdx, 56(%rdi) movdqa %xmm0, 64(%rdi) movdqa %xmm1, 80(%rdi) cmpb $2, 225(%rdi) je Lpop_long_double Lreturn: movq %rbp, %rsp popq %rbp ret Lfix_align: xorq %r11, %r11 pushq %r11 jmp Lfill_stack Lcall_send_stret: call _objc_msgSend_stret jmp Lafter_send Lpop_long_double: fstpt 192(%rdi) jmp Lreturn |