Differences From 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]
To Artifact [25b2bcb4a7]:
- File src/invocation/apple-call-x86_64.S — part of check-in [4628f6bbff] at 2017-09-17 10:48:07 on branch trunk — invoke-x86_64.m: Support complex long double (user: js, size: 2021) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
63 64 65 66 67 68 69 | movq 0(%rdi), %rdi movb 225(%rdi), %r11b cmpb $1, %r11b je Lcall_send_stret | | | > > | > > > > > > > > | 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 106 107 108 109 110 111 112 113 114 115 | movq 0(%rdi), %rdi movb 225(%rdi), %r11b cmpb $1, %r11b je Lcall_send_stret cmpb $4, %r11b je _objc_msgSend cmpb $5, %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) movb 225(%rdi), %r11b cmpb $2, %r11b je Lpop_long_double cmpb $3, %r11b je Lpop_complex_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 Lpop_complex_long_double: fstpt 192(%rdi) fstpt 208(%rdi) jmp Lreturn |