ObjFW  Diff

Differences From Artifact [94ccf0547a]:

To Artifact [5536a6afa6]:


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







+
+
+
+
+
+









-
+
-
-







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

#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	%rcx, %rcx
	jz	.LreturnNilMethod

	testb	$1, %cl
	jnz	.LtaggedPointer_\name

75
76
77
78
79
80
81
82

83
84
85
86
87
88
89
90
91
79
80
81
82
83
84
85

86


87
88
89
90
91
92
93







-
+
-
-







.scl 2
.type 32
.endef
.endm

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

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

	movq	8(%r8), %r8