1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
-
+
-
+
-
+
-
+
|
/*
* Copyright (c) 2008-2022 Jonathan Schleifer <js@nil.im>
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#include "config.h"
.globl _OFForward
.globl _OFForward_stret
.section __TEXT, __objc_methname, cstring_literals
str_forwardingTargetForSelector_:
Lstr_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
.section __DATA, __objc_selrefs, literal_pointers, no_dead_strip
sel_forwardingTargetForSelector_:
Lsel_forwardingTargetForSelector_:
.long str_forwardingTargetForSelector_
.section __DATA, __objc_imageinfo, regular, no_dead_strip
.long 0, 0
.section __TEXT, __text, regular, pure_instructions
.arm
.align 2
_OFForward:
stmfd sp!, {r0-r4, lr}
vstmdb sp!, {d0-d7}
ldr r4, sel_forwardingTargetForSelector_$indirect_L0
ldr r4, Lsel_forwardingTargetForSelector_$indirect_L0
L0:
ldr r4, [pc, r4]
blx _object_getClass
mov r1, r4
blx _class_respondsToSelector
|
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
-
-
+
+
-
+
|
0:
vldmia sp!, {d0-d7}
ldmfd sp!, {r0-r4, lr}
b _OFMethodNotFound
.data_region
sel_forwardingTargetForSelector_$indirect_L0:
.long sel_forwardingTargetForSelector_-(L0+8)
Lsel_forwardingTargetForSelector_$indirect_L0:
.long Lsel_forwardingTargetForSelector_-(L0+8)
.end_data_region
.align 2
_OFForward_stret:
stmfd sp!, {r0-r4, lr}
vstmdb sp!, {d0-d7}
ldr r4, sel_forwardingTargetForSelector_$indirect_L1
ldr r4, Lsel_forwardingTargetForSelector_$indirect_L1
L1:
ldr r4, [pc, r4]
mov r0, r1
blx _object_getClass
mov r1, r4
|
115
116
117
118
119
120
121
122
123
124
|
115
116
117
118
119
120
121
122
123
124
|
-
-
+
+
|
0:
vldmia sp!, {d0-d7}
ldmfd sp!, {r0-r4, lr}
b _OFMethodNotFound_stret
.data_region
sel_forwardingTargetForSelector_$indirect_L1:
.long sel_forwardingTargetForSelector_-(L1+8)
Lsel_forwardingTargetForSelector_$indirect_L1:
.long Lsel_forwardingTargetForSelector_-(L1+8)
.end_data_region
|