Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: src/mips/interface-descriptors-mips.cc

Issue 1211333003: Make context register implicit for CallInterfaceDescriptors (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Platform ports Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_MIPS 7 #if V8_TARGET_ARCH_MIPS
8 8
9 #include "src/interface-descriptors.h" 9 #include "src/interface-descriptors.h"
10 10
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 return MathPowTaggedDescriptor::exponent(); 57 return MathPowTaggedDescriptor::exponent();
58 } 58 }
59 59
60 60
61 const Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; } 61 const Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; }
62 const Register GrowArrayElementsDescriptor::KeyRegister() { return a3; } 62 const Register GrowArrayElementsDescriptor::KeyRegister() { return a3; }
63 63
64 64
65 void FastNewClosureDescriptor::InitializePlatformSpecific( 65 void FastNewClosureDescriptor::InitializePlatformSpecific(
66 CallInterfaceDescriptorData* data) { 66 CallInterfaceDescriptorData* data) {
67 Register registers[] = {cp, a2}; 67 Register registers[] = {a2};
68 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 68 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
69 } 69 }
70 70
71 71
72 void FastNewContextDescriptor::InitializePlatformSpecific( 72 void FastNewContextDescriptor::InitializePlatformSpecific(
73 CallInterfaceDescriptorData* data) { 73 CallInterfaceDescriptorData* data) {
74 Register registers[] = {cp, a1}; 74 Register registers[] = {a1};
75 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 75 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
76 } 76 }
77 77
78 78
79 void ToNumberDescriptor::InitializePlatformSpecific( 79 void ToNumberDescriptor::InitializePlatformSpecific(
80 CallInterfaceDescriptorData* data) { 80 CallInterfaceDescriptorData* data) {
81 Register registers[] = {cp, a0}; 81 Register registers[] = {a0};
82 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 82 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
83 } 83 }
84 84
85 85
86 void NumberToStringDescriptor::InitializePlatformSpecific( 86 void NumberToStringDescriptor::InitializePlatformSpecific(
87 CallInterfaceDescriptorData* data) { 87 CallInterfaceDescriptorData* data) {
88 Register registers[] = {cp, a0}; 88 Register registers[] = {a0};
89 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 89 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
90 } 90 }
91 91
92 92
93 void TypeofDescriptor::InitializePlatformSpecific( 93 void TypeofDescriptor::InitializePlatformSpecific(
94 CallInterfaceDescriptorData* data) { 94 CallInterfaceDescriptorData* data) {
95 Register registers[] = {cp, a3}; 95 Register registers[] = {a3};
96 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 96 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
97 } 97 }
98 98
99 99
100 void FastCloneShallowArrayDescriptor::InitializePlatformSpecific( 100 void FastCloneShallowArrayDescriptor::InitializePlatformSpecific(
101 CallInterfaceDescriptorData* data) { 101 CallInterfaceDescriptorData* data) {
102 Register registers[] = {cp, a3, a2, a1}; 102 Register registers[] = {a3, a2, a1};
103 data->InitializePlatformSpecific(arraysize(registers), registers); 103 data->InitializePlatformSpecific(arraysize(registers), registers);
104 } 104 }
105 105
106 106
107 void FastCloneShallowObjectDescriptor::InitializePlatformSpecific( 107 void FastCloneShallowObjectDescriptor::InitializePlatformSpecific(
108 CallInterfaceDescriptorData* data) { 108 CallInterfaceDescriptorData* data) {
109 Register registers[] = {cp, a3, a2, a1, a0}; 109 Register registers[] = {a3, a2, a1, a0};
110 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 110 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
111 } 111 }
112 112
113 113
114 void CreateAllocationSiteDescriptor::InitializePlatformSpecific( 114 void CreateAllocationSiteDescriptor::InitializePlatformSpecific(
115 CallInterfaceDescriptorData* data) { 115 CallInterfaceDescriptorData* data) {
116 Register registers[] = {cp, a2, a3}; 116 Register registers[] = {a2, a3};
117 data->InitializePlatformSpecific(arraysize(registers), registers); 117 data->InitializePlatformSpecific(arraysize(registers), registers);
118 } 118 }
119 119
120 120
121 void CreateWeakCellDescriptor::InitializePlatformSpecific( 121 void CreateWeakCellDescriptor::InitializePlatformSpecific(
122 CallInterfaceDescriptorData* data) { 122 CallInterfaceDescriptorData* data) {
123 Register registers[] = {cp, a2, a3, a1}; 123 Register registers[] = {a2, a3, a1};
124 data->InitializePlatformSpecific(arraysize(registers), registers); 124 data->InitializePlatformSpecific(arraysize(registers), registers);
125 } 125 }
126 126
127 127
128 void StoreArrayLiteralElementDescriptor::InitializePlatformSpecific( 128 void StoreArrayLiteralElementDescriptor::InitializePlatformSpecific(
129 CallInterfaceDescriptorData* data) { 129 CallInterfaceDescriptorData* data) {
130 Register registers[] = {cp, a3, a0}; 130 Register registers[] = {a3, a0};
131 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 131 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
132 } 132 }
133 133
134 134
135 void CallFunctionDescriptor::InitializePlatformSpecific( 135 void CallFunctionDescriptor::InitializePlatformSpecific(
136 CallInterfaceDescriptorData* data) { 136 CallInterfaceDescriptorData* data) {
137 Register registers[] = {cp, a1}; 137 Register registers[] = {a1};
138 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 138 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
139 } 139 }
140 140
141 141
142 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific( 142 void CallFunctionWithFeedbackDescriptor::InitializePlatformSpecific(
143 CallInterfaceDescriptorData* data) { 143 CallInterfaceDescriptorData* data) {
144 Register registers[] = {cp, a1, a3}; 144 Register registers[] = {a1, a3};
145 data->InitializePlatformSpecific(arraysize(registers), registers); 145 data->InitializePlatformSpecific(arraysize(registers), registers);
146 } 146 }
147 147
148 148
149 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific( 149 void CallFunctionWithFeedbackAndVectorDescriptor::InitializePlatformSpecific(
150 CallInterfaceDescriptorData* data) { 150 CallInterfaceDescriptorData* data) {
151 Register registers[] = {cp, a1, a3, a2}; 151 Register registers[] = {a1, a3, a2};
152 data->InitializePlatformSpecific(arraysize(registers), registers); 152 data->InitializePlatformSpecific(arraysize(registers), registers);
153 } 153 }
154 154
155 155
156 void CallConstructDescriptor::InitializePlatformSpecific( 156 void CallConstructDescriptor::InitializePlatformSpecific(
157 CallInterfaceDescriptorData* data) { 157 CallInterfaceDescriptorData* data) {
158 // a0 : number of arguments 158 // a0 : number of arguments
159 // a1 : the function to call 159 // a1 : the function to call
160 // a2 : feedback vector 160 // a2 : feedback vector
161 // a3 : (only if a2 is not the megamorphic symbol) slot in feedback 161 // a3 : (only if a2 is not the megamorphic symbol) slot in feedback
162 // vector (Smi) 162 // vector (Smi)
163 // TODO(turbofan): So far we don't gather type feedback and hence skip the 163 // TODO(turbofan): So far we don't gather type feedback and hence skip the
164 // slot parameter, but ArrayConstructStub needs the vector to be undefined. 164 // slot parameter, but ArrayConstructStub needs the vector to be undefined.
165 Register registers[] = {cp, a0, a1, a2}; 165 Register registers[] = {a0, a1, a2};
166 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 166 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
167 } 167 }
168 168
169 169
170 void RegExpConstructResultDescriptor::InitializePlatformSpecific( 170 void RegExpConstructResultDescriptor::InitializePlatformSpecific(
171 CallInterfaceDescriptorData* data) { 171 CallInterfaceDescriptorData* data) {
172 Register registers[] = {cp, a2, a1, a0}; 172 Register registers[] = {a2, a1, a0};
173 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 173 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
174 } 174 }
175 175
176 176
177 void TransitionElementsKindDescriptor::InitializePlatformSpecific( 177 void TransitionElementsKindDescriptor::InitializePlatformSpecific(
178 CallInterfaceDescriptorData* data) { 178 CallInterfaceDescriptorData* data) {
179 Register registers[] = {cp, a0, a1}; 179 Register registers[] = {a0, a1};
180 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 180 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
181 } 181 }
182 182
183 183
184 void AllocateHeapNumberDescriptor::InitializePlatformSpecific( 184 void AllocateHeapNumberDescriptor::InitializePlatformSpecific(
185 CallInterfaceDescriptorData* data) { 185 CallInterfaceDescriptorData* data) {
186 // register state 186 // register state
187 // cp -- context 187 data->InitializePlatformSpecific(0, nullptr, nullptr);
188 Register registers[] = {cp};
189 data->InitializePlatformSpecific(arraysize(registers), registers, nullptr);
190 } 188 }
191 189
192 190
193 void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific( 191 void ArrayConstructorConstantArgCountDescriptor::InitializePlatformSpecific(
194 CallInterfaceDescriptorData* data) { 192 CallInterfaceDescriptorData* data) {
195 // register state 193 // register state
196 // cp -- context
197 // a0 -- number of arguments 194 // a0 -- number of arguments
198 // a1 -- function 195 // a1 -- function
199 // a2 -- allocation site with elements kind 196 // a2 -- allocation site with elements kind
200 Register registers[] = {cp, a1, a2}; 197 Register registers[] = {a1, a2};
201 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 198 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
202 } 199 }
203 200
204 201
205 void ArrayConstructorDescriptor::InitializePlatformSpecific( 202 void ArrayConstructorDescriptor::InitializePlatformSpecific(
206 CallInterfaceDescriptorData* data) { 203 CallInterfaceDescriptorData* data) {
207 // stack param count needs (constructor pointer, and single argument) 204 // stack param count needs (constructor pointer, and single argument)
208 Register registers[] = {cp, a1, a2, a0}; 205 Register registers[] = {a1, a2, a0};
209 data->InitializePlatformSpecific(arraysize(registers), registers); 206 data->InitializePlatformSpecific(arraysize(registers), registers);
210 } 207 }
211 208
212 209
213 void InternalArrayConstructorConstantArgCountDescriptor:: 210 void InternalArrayConstructorConstantArgCountDescriptor::
214 InitializePlatformSpecific(CallInterfaceDescriptorData* data) { 211 InitializePlatformSpecific(CallInterfaceDescriptorData* data) {
215 // register state 212 // register state
216 // cp -- context
217 // a0 -- number of arguments 213 // a0 -- number of arguments
218 // a1 -- constructor function 214 // a1 -- constructor function
219 Register registers[] = {cp, a1}; 215 Register registers[] = {a1};
220 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 216 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
221 } 217 }
222 218
223 219
224 void InternalArrayConstructorDescriptor::InitializePlatformSpecific( 220 void InternalArrayConstructorDescriptor::InitializePlatformSpecific(
225 CallInterfaceDescriptorData* data) { 221 CallInterfaceDescriptorData* data) {
226 // stack param count needs (constructor pointer, and single argument) 222 // stack param count needs (constructor pointer, and single argument)
227 Register registers[] = {cp, a1, a0}; 223 Register registers[] = {a1, a0};
228 data->InitializePlatformSpecific(arraysize(registers), registers); 224 data->InitializePlatformSpecific(arraysize(registers), registers);
229 } 225 }
230 226
231 227
232 void CompareDescriptor::InitializePlatformSpecific( 228 void CompareDescriptor::InitializePlatformSpecific(
233 CallInterfaceDescriptorData* data) { 229 CallInterfaceDescriptorData* data) {
234 Register registers[] = {cp, a1, a0}; 230 Register registers[] = {a1, a0};
235 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 231 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
236 } 232 }
237 233
238 234
239 void CompareNilDescriptor::InitializePlatformSpecific( 235 void CompareNilDescriptor::InitializePlatformSpecific(
240 CallInterfaceDescriptorData* data) { 236 CallInterfaceDescriptorData* data) {
241 Register registers[] = {cp, a0}; 237 Register registers[] = {a0};
242 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 238 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
243 } 239 }
244 240
245 241
246 void ToBooleanDescriptor::InitializePlatformSpecific( 242 void ToBooleanDescriptor::InitializePlatformSpecific(
247 CallInterfaceDescriptorData* data) { 243 CallInterfaceDescriptorData* data) {
248 Register registers[] = {cp, a0}; 244 Register registers[] = {a0};
249 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 245 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
250 } 246 }
251 247
252 248
253 void BinaryOpDescriptor::InitializePlatformSpecific( 249 void BinaryOpDescriptor::InitializePlatformSpecific(
254 CallInterfaceDescriptorData* data) { 250 CallInterfaceDescriptorData* data) {
255 Register registers[] = {cp, a1, a0}; 251 Register registers[] = {a1, a0};
256 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 252 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
257 } 253 }
258 254
259 255
260 void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific( 256 void BinaryOpWithAllocationSiteDescriptor::InitializePlatformSpecific(
261 CallInterfaceDescriptorData* data) { 257 CallInterfaceDescriptorData* data) {
262 Register registers[] = {cp, a2, a1, a0}; 258 Register registers[] = {a2, a1, a0};
263 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 259 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
264 } 260 }
265 261
266 262
267 void StringAddDescriptor::InitializePlatformSpecific( 263 void StringAddDescriptor::InitializePlatformSpecific(
268 CallInterfaceDescriptorData* data) { 264 CallInterfaceDescriptorData* data) {
269 Register registers[] = {cp, a1, a0}; 265 Register registers[] = {a1, a0};
270 data->InitializePlatformSpecific(arraysize(registers), registers, NULL); 266 data->InitializePlatformSpecific(arraysize(registers), registers, NULL);
271 } 267 }
272 268
273 269
274 void KeyedDescriptor::InitializePlatformSpecific( 270 void KeyedDescriptor::InitializePlatformSpecific(
275 CallInterfaceDescriptorData* data) { 271 CallInterfaceDescriptorData* data) {
276 Register registers[] = { 272 Register registers[] = {
277 cp, // context
278 a2, // key 273 a2, // key
279 }; 274 };
280 data->InitializePlatformSpecific(arraysize(registers), registers); 275 data->InitializePlatformSpecific(arraysize(registers), registers);
281 } 276 }
282 277
283 278
284 void NamedDescriptor::InitializePlatformSpecific( 279 void NamedDescriptor::InitializePlatformSpecific(
285 CallInterfaceDescriptorData* data) { 280 CallInterfaceDescriptorData* data) {
286 Register registers[] = { 281 Register registers[] = {
287 cp, // context
288 a2, // name 282 a2, // name
289 }; 283 };
290 data->InitializePlatformSpecific(arraysize(registers), registers); 284 data->InitializePlatformSpecific(arraysize(registers), registers);
291 } 285 }
292 286
293 287
294 void CallHandlerDescriptor::InitializePlatformSpecific( 288 void CallHandlerDescriptor::InitializePlatformSpecific(
295 CallInterfaceDescriptorData* data) { 289 CallInterfaceDescriptorData* data) {
296 Register registers[] = { 290 Register registers[] = {
297 cp, // context
298 a0, // receiver 291 a0, // receiver
299 }; 292 };
300 data->InitializePlatformSpecific(arraysize(registers), registers); 293 data->InitializePlatformSpecific(arraysize(registers), registers);
301 } 294 }
302 295
303 296
304 void ArgumentAdaptorDescriptor::InitializePlatformSpecific( 297 void ArgumentAdaptorDescriptor::InitializePlatformSpecific(
305 CallInterfaceDescriptorData* data) { 298 CallInterfaceDescriptorData* data) {
306 Register registers[] = { 299 Register registers[] = {
307 cp, // context
308 a1, // JSFunction 300 a1, // JSFunction
309 a0, // actual number of arguments 301 a0, // actual number of arguments
310 a2, // expected number of arguments 302 a2, // expected number of arguments
311 }; 303 };
312 data->InitializePlatformSpecific(arraysize(registers), registers); 304 data->InitializePlatformSpecific(arraysize(registers), registers);
313 } 305 }
314 306
315 307
316 void ApiFunctionDescriptor::InitializePlatformSpecific( 308 void ApiFunctionDescriptor::InitializePlatformSpecific(
317 CallInterfaceDescriptorData* data) { 309 CallInterfaceDescriptorData* data) {
318 Register registers[] = { 310 Register registers[] = {
319 cp, // context
320 a0, // callee 311 a0, // callee
321 t0, // call_data 312 t0, // call_data
322 a2, // holder 313 a2, // holder
323 a1, // api_function_address 314 a1, // api_function_address
324 a3, // actual number of arguments 315 a3, // actual number of arguments
325 }; 316 };
326 data->InitializePlatformSpecific(arraysize(registers), registers); 317 data->InitializePlatformSpecific(arraysize(registers), registers);
327 } 318 }
328 319
329 320
330 void ApiAccessorDescriptor::InitializePlatformSpecific( 321 void ApiAccessorDescriptor::InitializePlatformSpecific(
331 CallInterfaceDescriptorData* data) { 322 CallInterfaceDescriptorData* data) {
332 Register registers[] = { 323 Register registers[] = {
333 cp, // context
334 a0, // callee 324 a0, // callee
335 t0, // call_data 325 t0, // call_data
336 a2, // holder 326 a2, // holder
337 a1, // api_function_address 327 a1, // api_function_address
338 }; 328 };
339 data->InitializePlatformSpecific(arraysize(registers), registers); 329 data->InitializePlatformSpecific(arraysize(registers), registers);
340 } 330 }
341 331
342 332
343 void MathRoundVariantDescriptor::InitializePlatformSpecific( 333 void MathRoundVariantDescriptor::InitializePlatformSpecific(
344 CallInterfaceDescriptorData* data) { 334 CallInterfaceDescriptorData* data) {
345 Register registers[] = { 335 Register registers[] = {
346 cp, // context
347 a1, // math rounding function 336 a1, // math rounding function
348 a3, // vector slot id 337 a3, // vector slot id
349 }; 338 };
350 data->InitializePlatformSpecific(arraysize(registers), registers); 339 data->InitializePlatformSpecific(arraysize(registers), registers);
351 } 340 }
352 } // namespace internal 341 } // namespace internal
353 } // namespace v8 342 } // namespace v8
354 343
355 #endif // V8_TARGET_ARCH_MIPS 344 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« src/code-stubs.h ('K') | « src/mips/code-stubs-mips.cc ('k') | src/mips/lithium-mips.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698