ObjFW  Diff

Differences From Artifact [23159b41e1]:

To Artifact [d1cf6bd700]:


24
25
26
27
28
29
30
31

32
33
34
35
36
37
38
24
25
26
27
28
29
30

31
32
33
34
35
36
37
38







-
+







.globl objc_msg_lookup_super
.globl objc_msg_lookup_super_stret

.section .text
.macro GENERATE_LOOKUP name notFound
\name:
	test	rdi, rdi
	jz	short returnNilMethod
	jz	short .LreturnNilMethod

	test	dil, 1
	jnz	short .LtaggedPointer_\name

	mov	r8, [rdi]
	mov	r8, [r8 + 64]

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
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







-
+













-
-
+
+


-
+






.endm

.macro GENERATE_LOOKUP_SUPER name lookup
\name:
	mov	r8, rdi
	mov	rdi, [rdi]
	test	rdi, rdi
	jz	short returnNilMethod
	jz	short .LreturnNilMethod

	mov	r8, [r8 + 8]
	mov	r8, [r8 + 64]
	jmp	short .Lmain_\lookup
.type \name, %function
.size \name, .-\name
.endm

GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound
GENERATE_LOOKUP objc_msg_lookup_stret objc_methodNotFound_stret
GENERATE_LOOKUP_SUPER objc_msg_lookup_super objc_msg_lookup
GENERATE_LOOKUP_SUPER objc_msg_lookup_super_stret objc_msg_lookup_stret

returnNilMethod:
	lea	rax, [rip + nilMethod]
.LreturnNilMethod:
	lea	rax, [rip + .LnilMethod]
	ret

nilMethod:
.LnilMethod:
	xor	rax, rax
	ret

#if defined(OF_LINUX) || defined(OF_HAIKU) || defined(OF_HURD)
.section .note.GNU-stack, "", %progbits
#endif