ObjFW  Diff

Differences From Artifact [2d0bee101c]:

To Artifact [78c7e0a619]:


38
39
40
41
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

97
98
99
100
101
102


103
104
105

106
107
38
39
40
41
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
97
98
99


100
101
102
103

104
105
106







-
+

-


-
-
-
-
-
+
+
+
+
+


-
-
-
-
+
+
+
+












-
+




-
+




-
-
-
-
-
+
+
+
+
+


-
-
-
-
+
+
+
+


-
+




-
-
+
+


-
+


.align 2
_OFForward:
_OFForward_stret:
#ifdef HAVE_BTI
	bti	c
#endif

	stp	fp, lr, [sp, #-208]!
	stp	fp, lr, [sp, #-224]!
	mov	fp, sp
	sub	sp, sp, #208

	/* Save all arguments, x8 and x19 */
	stp	x0, x1, [sp]
	stp	x2, x3, [sp, #16]
	stp	x4, x5, [sp, #32]
	stp	x6, x7, [sp, #48]
	stp	x8, x19, [sp, #64]
	stp	x0, x1, [sp, #16]
	stp	x2, x3, [sp, #32]
	stp	x4, x5, [sp, #48]
	stp	x6, x7, [sp, #64]
	stp	x8, x19, [sp, #80]

	/* Save all foating point arguments */
	stp	q0, q1, [sp, #80]
	stp	q2, q3, [sp, #112]
	stp	q4, q5, [sp, #144]
	stp	q6, q7, [sp, #176]
	stp	q0, q1, [sp, #96]
	stp	q2, q3, [sp, #128]
	stp	q4, q5, [sp, #160]
	stp	q6, q7, [sp, #192]

	bl	_object_getClass

	adrp	x19, Lsel_forwardingTargetForSelector_@PAGE
	add	x19, x19, Lsel_forwardingTargetForSelector_@PAGEOFF
	ldr	x19, [x19]

	mov	x1, x19
	bl	_class_respondsToSelector

	cbz	x0, 0f

	ldp	x0, x2, [sp]
	ldp	x0, x2, [sp, #16]
	mov	x1, x19
	bl	_objc_msgSend

	cbz	x0, 0f
	ldr	x1, [sp]
	ldr	x1, [sp, #16]
	cmp	x0, x1
	b.eq	0f

	/* Restore all arguments, x8 and x19, but not x0 */
	ldr	x1, [sp, #8]
	ldp	x2, x3, [sp, #16]
	ldp	x4, x5, [sp, #32]
	ldp	x6, x7, [sp, #48]
	ldp	x8, x19, [sp, #64]
	ldr	x1, [sp, #24]
	ldp	x2, x3, [sp, #32]
	ldp	x4, x5, [sp, #48]
	ldp	x6, x7, [sp, #64]
	ldp	x8, x19, [sp, #80]

	/* Restore all foating point arguments */
	ldp	q0, q1, [sp, #80]
	ldp	q2, q3, [sp, #112]
	ldp	q4, q5, [sp, #144]
	ldp	q6, q7, [sp, #176]
	ldp	q0, q1, [sp, #96]
	ldp	q2, q3, [sp, #128]
	ldp	q4, q5, [sp, #160]
	ldp	q6, q7, [sp, #192]

	mov	sp, fp
	ldp	fp, lr, [sp], #208
	ldp	fp, lr, [sp], #224

	b	_objc_msgSend

0:
	ldp	x0, x1, [sp]
	ldr	x19, [sp, #72]
	ldp	x0, x1, [sp, #16]
	ldr	x19, [sp, #88]

	mov	sp, fp
	ldp	fp, lr, [sp], #208
	ldp	fp, lr, [sp], #224

	b	_OFMethodNotFound