ObjFW  Diff

Differences From Artifact [cda30cbc44]:

To Artifact [9ca4623ef2]:


60
61
62
63
64
65
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
95
96
60
61
62
63
64
65
66

67
68
69
70
71
72
73

74
75
76





77
78
79



80





81
82
83
84
85
86
87
88







-
+






-
+


-
-
-
-
-
+
+
+
-
-
-
+
-
-
-
-
-
+







	ld	$t0, 0($t0)
	daddu	$t0, $t0, $t3
	ld	$t0, 0($t0)

	beqz	$t0, 1f

	move	$v0, $t0
	j	$ra
	jr	$ra

0:
	lui	$v0, %hi(%neg(%gp_rel(\name)))
	daddu	$v0, $v0, $t9
	daddiu	$v0, $v0, %lo(%neg(%gp_rel(\name)))
	ld	$v0, %got_disp(nil_method)($v0)
	j	$ra
	jr	$ra

1:
	daddiu	$sp, $sp, -32
	sd	$gp, 16($sp)
	lui	$gp, %hi(%neg(%gp_rel(\name)))
	daddu	$gp, $gp, $t9
	daddiu	$gp, $gp, %lo(%neg(%gp_rel(\name)))
	lui	$t0, %hi(%neg(%gp_rel(\name)))
	daddu	$t0, $t0, $t9
	daddiu	$t0, $t0, %lo(%neg(%gp_rel(\name)))
	sd	$ra, 24($sp)

	jal	\not_found
	ld	$t9, %got_disp(\not_found)($t0)

	ld	$ra, 24($sp)
	ld	$gp, 16($sp)
	daddiu	$sp, $sp, 32
	j	$ra
	jr	$t9
.type \name, %function
.size \name, .-\name
.endm

.macro generate_lookup_super name lookup
\name:
	move	$t0, $a0
104
105
106
107
108
109
110
111

112
113
114
115
116
117
118
119
120
121
122
123

124
125
126
127
96
97
98
99
100
101
102

103
104
105
106
107
108
109
110
111
112
113
114

115
116
117
118
119







-
+











-
+




	b	.Lmain_\lookup

0:
	lui	$v0, %hi(%neg(%gp_rel(\name)))
	daddu	$v0, $v0, $t9
	daddiu	$v0, $v0, %lo(%neg(%gp_rel(\name)))
	ld	$v0, %got_disp(nil_method)($v0)
	j	$ra
	jr	$ra
.type \name, %function
.size \name, .-\name
.endm

generate_lookup objc_msg_lookup objc_method_not_found
generate_lookup objc_msg_lookup_stret objc_method_not_found_stret
generate_lookup_super objc_msg_lookup_super objc_msg_lookup
generate_lookup_super objc_msg_lookup_super_stret objc_msg_lookup_stret

nil_method:
	move	$v0, $zero
	j	$ra
	jr	$ra

#ifdef OF_LINUX
.section .note.GNU-stack, "", %progbits
#endif