ObjFW  Diff

Differences From Artifact [cb61c5a810]:

To Artifact [697db5824e]:


30
31
32
33
34
35
36
37
38


39
40
41
42
43
44
45
30
31
32
33
34
35
36


37
38
39
40
41
42
43
44
45







-
-
+
+







.macro GENERATE_LOOKUP name notFound
\name:
	beqz	$a0, .LreturnNilMethod

	andi	$t0, $a0, 1
	bnez	$t0, .LtaggedPointer_\name

	ld.d	$t0, $a0, 0
	ld.d	$t0, $t0, 64
	ldptr.d	$t0, $a0, 0
	ldptr.d	$t0, $t0, 64

.Lmain_\name:
#ifdef OF_SELUID24
	ld.bu	$t1, $a1, 2
	slli.d	$t1, $t1, 3
#endif
	ld.bu	$t2, $a1, 1
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
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







-
+









-
+


-
-
+
+







	ldptr.d	$t1, $t1, 0
	xor	$t1, $a0, $t1
	andi	$t1, $t1, 0xE
	slli.d	$t1, $t1, 2

	la.global $t0, objc_taggedPointerClasses
	ldx.d	$t0, $t0, $t1
	ld.d	$t0, $t0, 64
	ldptr.d	$t0, $t0, 64

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

.macro GENERATE_LOOKUP_SUPER name lookup
\name:
	move	$t0, $a0
	ld.d	$a0, $a0, 0
	ldptr.d	$a0, $a0, 0
	beqz	$a0, .LreturnNilMethod

	ld.d	$t0, $t0, 8
	ld.d	$t0, $t0, 64
	ldptr.d	$t0, $t0, 8
	ldptr.d	$t0, $t0, 64

	b	.Lmain_\lookup
.type \name, %function
.size \name, .-\name
.endm

GENERATE_LOOKUP objc_msg_lookup objc_methodNotFound