Differences From Artifact [a8e2abaeb9]:
- File
src/forwarding-arm-elf.S
— part of check-in
[9713ad857d]
at
2013-07-26 15:21:45
on branch trunk
— Add support for objc_msg_lookup_stret.
The assembly implementations of the lookup and forwarding still need to
be adjusted. Those just alias to the non-stret version for now so that
linking works, meaning the behaviour is still the same as without
support for objc_msg_lookup_stret for now. (user: js, size: 1724) [annotate] [blame] [check-ins using]
To Artifact [9a7d09481f]:
- File src/forwarding-arm-elf.S — part of check-in [2b1b0f8b59] at 2013-07-28 15:29:33 on branch trunk — Add of_forward_stret for ARM/ELF. (user: js, size: 2267) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
15 16 17 18 19 20 21 | */ .globl of_forward .globl of_forward_stret .section .text of_forward: | < | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | */ .globl of_forward .globl of_forward_stret .section .text of_forward: stmfd sp!, {r0-r3, lr} fstmfdd sp!, {d0-d7} ldr r1, sel_forwardingTargetForSelector__indirect_L0 .L0: add r1, pc stmfd sp!, {r1} |
︙ | ︙ | |||
43 44 45 46 47 48 49 50 | fldmfdd sp!, {d0-d7} ldmfd sp!, {r0-r3, lr} bx r12 .type of_forward, %function .size of_forward, .-of_forward init: | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > > | | | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 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 | fldmfdd sp!, {d0-d7} ldmfd sp!, {r0-r3, lr} bx r12 .type of_forward, %function .size of_forward, .-of_forward of_forward_stret: stmfd sp!, {r0-r3, lr} fstmfdd sp!, {d0-d7} mov r0, r1 ldr r1, sel_forwardingTargetForSelector__indirect_L1 .L1: add r1, pc stmfd sp!, {r1} bl objc_msg_lookup(PLT) ldmfd sp!, {r1} mov r12, r0 ldr r0, [sp, #68] ldr r2, [sp, #72] blx r12 str r0, [sp, #68] ldr r1, [sp, #72] bl objc_msg_lookup(PLT) mov r12, r0 fldmfdd sp!, {d0-d7} ldmfd sp!, {r0-r3, lr} bx r12 .type of_forward_stret, %function .size of_forward_stret, .-of_forward_stret init: ldr r0, module_indirect_L2 .L2: add r0, pc b __objc_exec_class(PLT) sel_forwardingTargetForSelector__indirect_L0: .long sel_forwardingTargetForSelector_-(.L0+8) sel_forwardingTargetForSelector__indirect_L1: .long sel_forwardingTargetForSelector_-(.L1+8) module_indirect_L2: .long module-(.L2+8) .section .ctors, "a", %progbits .long init .section .rodata str_forwardingTargetForSelector_: .asciz "forwardingTargetForSelector:" |
︙ | ︙ |