ObjFW  Diff

Differences From Artifact [ba2d9c7098]:

To Artifact [447b9d83b0]:


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_ENDBR32
	_CET_ENDBR
	endbr32
#endif

	movl	4(%esp), %edx
	testl	%edx, %edx
	jz	returnNilMethod

	testb	$1, %dl
	jnz	.LtaggedPointer_\name
67
68
69
70
71
72
73
74

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

78


79
80
81
82
83
84
85







-
+
-
-







.scl 2
.type 32
.endef
.endm

.macro GENERATE_LOOKUP_SUPER name lookup
\name:
#ifdef HAVE_ENDBR32
	_CET_ENDBR
	endbr32
#endif

	movl	4(%esp), %edx
	movl	(%edx), %eax
	test	%eax, %eax
	jz	returnNilMethod

	movl	%eax, 4(%esp)