ObjFW  Diff

Differences From Artifact [2b44a729f4]:

To Artifact [c26c73e7ea]:


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







+
+
+
+
+
+









-
+
-
-







 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#include "config.h"

#include "platform.h"

#ifdef HAVE_CET_H
# include <cet.h>
#else
# define _CET_ENDBR
#endif

.globl objc_msg_lookup
.globl objc_msg_lookup_stret
.globl objc_msg_lookup_super
.globl objc_msg_lookup_super_stret

.section .text
.macro GENERATE_LOOKUP name notFound
\name:
#ifdef HAVE_ENDBR64
	_CET_ENDBR
	endbr64
#endif

	testq	%rdi, %rdi
	jz	.LreturnNilMethod

	testb	$1, %dil
	jnz	.LtaggedPointer_\name

68
69
70
71
72
73
74
75

76
77
78
79
80
81
82
83
84
72
73
74
75
76
77
78

79


80
81
82
83
84
85
86







-
+
-
-







	jmp	.Lmain_\name
.type \name, %function
.size \name, .-\name
.endm

.macro GENERATE_LOOKUP_SUPER name lookup
\name:
#ifdef HAVE_ENDBR64
	_CET_ENDBR
	endbr64
#endif

	movq	%rdi, %r8
	movq	(%rdi), %rdi
	testq	%rdi, %rdi
	jz	.LreturnNilMethod

	movq	8(%r8), %r8