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
|