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/interface-descriptors.h" | 5 #include "src/interface-descriptors.h" |
6 | 6 |
7 namespace v8 { | 7 namespace v8 { |
8 namespace internal { | 8 namespace internal { |
9 | 9 |
10 | 10 |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 // kFunction, kActualArgumentsCount, kSlot, kVector | 382 // kFunction, kActualArgumentsCount, kSlot, kVector |
383 MachineType machine_types[] = { | 383 MachineType machine_types[] = { |
384 MachineType::TaggedPointer(), MachineType::Int32(), | 384 MachineType::TaggedPointer(), MachineType::Int32(), |
385 MachineType::TaggedSigned(), MachineType::AnyTagged()}; | 385 MachineType::TaggedSigned(), MachineType::AnyTagged()}; |
386 data->InitializePlatformIndependent(arraysize(machine_types), 0, | 386 data->InitializePlatformIndependent(arraysize(machine_types), 0, |
387 machine_types); | 387 machine_types); |
388 } | 388 } |
389 | 389 |
390 void BuiltinDescriptor::InitializePlatformIndependent( | 390 void BuiltinDescriptor::InitializePlatformIndependent( |
391 CallInterfaceDescriptorData* data) { | 391 CallInterfaceDescriptorData* data) { |
392 MachineType machine_types[] = {MachineType::AnyTagged(), | 392 MachineType machine_types[] = { |
393 MachineType::Int32()}; | 393 MachineType::AnyTagged(), MachineType::AnyTagged(), MachineType::Int32()}; |
394 data->InitializePlatformIndependent(arraysize(machine_types), 0, | 394 data->InitializePlatformIndependent(arraysize(machine_types), 0, |
395 machine_types); | 395 machine_types); |
396 } | 396 } |
397 | 397 |
398 void BuiltinDescriptor::InitializePlatformSpecific( | 398 void BuiltinDescriptor::InitializePlatformSpecific( |
399 CallInterfaceDescriptorData* data) { | 399 CallInterfaceDescriptorData* data) { |
400 Register registers[] = {NewTargetRegister(), ArgumentsCountRegister()}; | 400 Register registers[] = {TargetRegister(), NewTargetRegister(), |
| 401 ArgumentsCountRegister()}; |
401 data->InitializePlatformSpecific(arraysize(registers), registers); | 402 data->InitializePlatformSpecific(arraysize(registers), registers); |
402 } | 403 } |
403 | 404 |
404 const Register BuiltinDescriptor::ArgumentsCountRegister() { | 405 const Register BuiltinDescriptor::ArgumentsCountRegister() { |
405 return kJavaScriptCallArgCountRegister; | 406 return kJavaScriptCallArgCountRegister; |
406 } | 407 } |
407 const Register BuiltinDescriptor::NewTargetRegister() { | 408 const Register BuiltinDescriptor::NewTargetRegister() { |
408 return kJavaScriptCallNewTargetRegister; | 409 return kJavaScriptCallNewTargetRegister; |
409 } | 410 } |
410 | 411 |
| 412 const Register BuiltinDescriptor::TargetRegister() { |
| 413 return kJSFunctionRegister; |
| 414 } |
| 415 |
411 void ArrayNoArgumentConstructorDescriptor::InitializePlatformIndependent( | 416 void ArrayNoArgumentConstructorDescriptor::InitializePlatformIndependent( |
412 CallInterfaceDescriptorData* data) { | 417 CallInterfaceDescriptorData* data) { |
413 // kFunction, kAllocationSite, kActualArgumentsCount, kFunctionParameter | 418 // kFunction, kAllocationSite, kActualArgumentsCount, kFunctionParameter |
414 MachineType machine_types[] = {MachineType::TaggedPointer(), | 419 MachineType machine_types[] = {MachineType::TaggedPointer(), |
415 MachineType::AnyTagged(), MachineType::Int32(), | 420 MachineType::AnyTagged(), MachineType::Int32(), |
416 MachineType::AnyTagged()}; | 421 MachineType::AnyTagged()}; |
417 data->InitializePlatformIndependent(arraysize(machine_types), 0, | 422 data->InitializePlatformIndependent(arraysize(machine_types), 0, |
418 machine_types); | 423 machine_types); |
419 } | 424 } |
420 | 425 |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 CallInterfaceDescriptorData* data) { | 508 CallInterfaceDescriptorData* data) { |
504 // kNumberOfArguments, kFirstArgument, kFunctionEntry | 509 // kNumberOfArguments, kFirstArgument, kFunctionEntry |
505 MachineType machine_types[] = {MachineType::Int32(), MachineType::Pointer(), | 510 MachineType machine_types[] = {MachineType::Int32(), MachineType::Pointer(), |
506 MachineType::Pointer()}; | 511 MachineType::Pointer()}; |
507 data->InitializePlatformIndependent(arraysize(machine_types), 0, | 512 data->InitializePlatformIndependent(arraysize(machine_types), 0, |
508 machine_types); | 513 machine_types); |
509 } | 514 } |
510 | 515 |
511 } // namespace internal | 516 } // namespace internal |
512 } // namespace v8 | 517 } // namespace v8 |
OLD | NEW |