OLD | NEW |
---|---|
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_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { | 304 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { |
305 static PlatformCallInterfaceDescriptor default_descriptor = | 305 static PlatformCallInterfaceDescriptor default_descriptor = |
306 PlatformCallInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); | 306 PlatformCallInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); |
307 | 307 |
308 static PlatformCallInterfaceDescriptor noInlineDescriptor = | 308 static PlatformCallInterfaceDescriptor noInlineDescriptor = |
309 PlatformCallInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); | 309 PlatformCallInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); |
310 | 310 |
311 { | 311 { |
312 CallInterfaceDescriptor* descriptor = | 312 CallInterfaceDescriptor* descriptor = |
313 isolate->call_descriptor(Isolate::ArgumentAdaptorCall); | 313 isolate->call_descriptor(Isolate::ArgumentAdaptorCall); |
314 static Register registers[] = { r1, // JSFunction | 314 Register registers[] = { r1, // JSFunction |
315 cp, // context | 315 cp, // context |
316 r0, // actual number of arguments | 316 r0, // actual number of arguments |
317 r2, // expected number of arguments | 317 r2, // expected number of arguments |
318 }; | 318 }; |
319 static Representation representations[] = { | 319 Representation representations[] = { |
320 Representation::Tagged(), // JSFunction | 320 Representation::Tagged(), // JSFunction |
321 Representation::Tagged(), // context | 321 Representation::Tagged(), // context |
322 Representation::Integer32(), // actual number of arguments | 322 Representation::Integer32(), // actual number of arguments |
323 Representation::Integer32(), // expected number of arguments | 323 Representation::Integer32(), // expected number of arguments |
324 }; | 324 }; |
325 descriptor->register_param_count_ = 4; | 325 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
Sven Panne
2014/06/25 08:15:21
It would be nice if there was a type for the Regis
mvstanton
2014/06/25 12:45:23
Good idea. Let me add the TODO up in code-stubs.h,
| |
326 descriptor->register_params_ = registers; | 326 representations, &default_descriptor); |
327 descriptor->param_representations_ = representations; | |
328 descriptor->platform_specific_descriptor_ = &default_descriptor; | |
329 } | 327 } |
330 { | 328 { |
331 CallInterfaceDescriptor* descriptor = | 329 CallInterfaceDescriptor* descriptor = |
332 isolate->call_descriptor(Isolate::KeyedCall); | 330 isolate->call_descriptor(Isolate::KeyedCall); |
333 static Register registers[] = { cp, // context | 331 Register registers[] = { cp, // context |
334 r2, // key | 332 r2, // key |
335 }; | 333 }; |
336 static Representation representations[] = { | 334 Representation representations[] = { |
337 Representation::Tagged(), // context | 335 Representation::Tagged(), // context |
338 Representation::Tagged(), // key | 336 Representation::Tagged(), // key |
339 }; | 337 }; |
340 descriptor->register_param_count_ = 2; | 338 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
341 descriptor->register_params_ = registers; | 339 representations, &noInlineDescriptor); |
342 descriptor->param_representations_ = representations; | |
343 descriptor->platform_specific_descriptor_ = &noInlineDescriptor; | |
344 } | 340 } |
345 { | 341 { |
346 CallInterfaceDescriptor* descriptor = | 342 CallInterfaceDescriptor* descriptor = |
347 isolate->call_descriptor(Isolate::NamedCall); | 343 isolate->call_descriptor(Isolate::NamedCall); |
348 static Register registers[] = { cp, // context | 344 Register registers[] = { cp, // context |
349 r2, // name | 345 r2, // name |
350 }; | 346 }; |
351 static Representation representations[] = { | 347 Representation representations[] = { |
352 Representation::Tagged(), // context | 348 Representation::Tagged(), // context |
353 Representation::Tagged(), // name | 349 Representation::Tagged(), // name |
354 }; | 350 }; |
355 descriptor->register_param_count_ = 2; | 351 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
356 descriptor->register_params_ = registers; | 352 representations, &noInlineDescriptor); |
357 descriptor->param_representations_ = representations; | |
358 descriptor->platform_specific_descriptor_ = &noInlineDescriptor; | |
359 } | 353 } |
360 { | 354 { |
361 CallInterfaceDescriptor* descriptor = | 355 CallInterfaceDescriptor* descriptor = |
362 isolate->call_descriptor(Isolate::CallHandler); | 356 isolate->call_descriptor(Isolate::CallHandler); |
363 static Register registers[] = { cp, // context | 357 Register registers[] = { cp, // context |
364 r0, // receiver | 358 r0, // receiver |
365 }; | 359 }; |
366 static Representation representations[] = { | 360 Representation representations[] = { |
367 Representation::Tagged(), // context | 361 Representation::Tagged(), // context |
368 Representation::Tagged(), // receiver | 362 Representation::Tagged(), // receiver |
369 }; | 363 }; |
370 descriptor->register_param_count_ = 2; | 364 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
371 descriptor->register_params_ = registers; | 365 representations, &default_descriptor); |
372 descriptor->param_representations_ = representations; | |
373 descriptor->platform_specific_descriptor_ = &default_descriptor; | |
374 } | 366 } |
375 { | 367 { |
376 CallInterfaceDescriptor* descriptor = | 368 CallInterfaceDescriptor* descriptor = |
377 isolate->call_descriptor(Isolate::ApiFunctionCall); | 369 isolate->call_descriptor(Isolate::ApiFunctionCall); |
378 static Register registers[] = { r0, // callee | 370 Register registers[] = { r0, // callee |
379 r4, // call_data | 371 r4, // call_data |
380 r2, // holder | 372 r2, // holder |
381 r1, // api_function_address | 373 r1, // api_function_address |
382 cp, // context | 374 cp, // context |
383 }; | 375 }; |
384 static Representation representations[] = { | 376 Representation representations[] = { |
385 Representation::Tagged(), // callee | 377 Representation::Tagged(), // callee |
386 Representation::Tagged(), // call_data | 378 Representation::Tagged(), // call_data |
387 Representation::Tagged(), // holder | 379 Representation::Tagged(), // holder |
388 Representation::External(), // api_function_address | 380 Representation::External(), // api_function_address |
389 Representation::Tagged(), // context | 381 Representation::Tagged(), // context |
390 }; | 382 }; |
391 descriptor->register_param_count_ = 5; | 383 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
392 descriptor->register_params_ = registers; | 384 representations, &default_descriptor); |
393 descriptor->param_representations_ = representations; | |
394 descriptor->platform_specific_descriptor_ = &default_descriptor; | |
395 } | 385 } |
396 } | 386 } |
397 | 387 |
398 | 388 |
399 #define __ ACCESS_MASM(masm) | 389 #define __ ACCESS_MASM(masm) |
400 | 390 |
401 | 391 |
402 static void EmitIdenticalObjectComparison(MacroAssembler* masm, | 392 static void EmitIdenticalObjectComparison(MacroAssembler* masm, |
403 Label* slow, | 393 Label* slow, |
404 Condition cond); | 394 Condition cond); |
(...skipping 4715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5120 MemOperand(fp, 6 * kPointerSize), | 5110 MemOperand(fp, 6 * kPointerSize), |
5121 NULL); | 5111 NULL); |
5122 } | 5112 } |
5123 | 5113 |
5124 | 5114 |
5125 #undef __ | 5115 #undef __ |
5126 | 5116 |
5127 } } // namespace v8::internal | 5117 } } // namespace v8::internal |
5128 | 5118 |
5129 #endif // V8_TARGET_ARCH_ARM | 5119 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |