| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef V8_CALL_INTERFACE_DESCRIPTOR_H_ | 5 #ifndef V8_CALL_INTERFACE_DESCRIPTOR_H_ |
| 6 #define V8_CALL_INTERFACE_DESCRIPTOR_H_ | 6 #define V8_CALL_INTERFACE_DESCRIPTOR_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "src/assembler.h" | 10 #include "src/assembler.h" |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 class StoreDescriptor : public CallInterfaceDescriptor { | 317 class StoreDescriptor : public CallInterfaceDescriptor { |
| 318 public: | 318 public: |
| 319 DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot) | 319 DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot) |
| 320 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreDescriptor, | 320 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreDescriptor, |
| 321 CallInterfaceDescriptor) | 321 CallInterfaceDescriptor) |
| 322 | 322 |
| 323 static const Register ReceiverRegister(); | 323 static const Register ReceiverRegister(); |
| 324 static const Register NameRegister(); | 324 static const Register NameRegister(); |
| 325 static const Register ValueRegister(); | 325 static const Register ValueRegister(); |
| 326 static const Register SlotRegister(); | 326 static const Register SlotRegister(); |
| 327 |
| 328 #if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87 |
| 329 static const bool kPassLastArgsOnStack = true; |
| 330 #else |
| 331 static const bool kPassLastArgsOnStack = false; |
| 332 #endif |
| 333 |
| 334 // Pass value and slot through the stack. |
| 335 static const int kStackArgumentsCount = kPassLastArgsOnStack ? 2 : 0; |
| 327 }; | 336 }; |
| 328 | 337 |
| 329 class StoreTransitionDescriptor : public StoreDescriptor { | 338 class StoreTransitionDescriptor : public StoreDescriptor { |
| 330 public: | 339 public: |
| 331 DEFINE_PARAMETERS(kReceiver, kName, kMap, kValue, kSlot, kVector) | 340 DEFINE_PARAMETERS(kReceiver, kName, kMap, kValue, kSlot, kVector) |
| 332 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreTransitionDescriptor, | 341 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreTransitionDescriptor, |
| 333 StoreDescriptor) | 342 StoreDescriptor) |
| 334 | 343 |
| 335 static const Register MapRegister(); | 344 static const Register MapRegister(); |
| 336 static const Register SlotRegister(); | 345 static const Register SlotRegister(); |
| 337 static const Register VectorRegister(); | 346 static const Register VectorRegister(); |
| 338 | 347 |
| 339 static bool PassVectorAndSlotOnStack(); | 348 // Pass value, slot and vector through the stack. |
| 349 static const int kStackArgumentsCount = kPassLastArgsOnStack ? 3 : 0; |
| 340 }; | 350 }; |
| 341 | 351 |
| 342 class StoreWithVectorDescriptor : public StoreDescriptor { | 352 class StoreWithVectorDescriptor : public StoreDescriptor { |
| 343 public: | 353 public: |
| 344 DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot, kVector) | 354 DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot, kVector) |
| 345 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreWithVectorDescriptor, | 355 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreWithVectorDescriptor, |
| 346 StoreDescriptor) | 356 StoreDescriptor) |
| 347 | 357 |
| 348 static const Register VectorRegister(); | 358 static const Register VectorRegister(); |
| 359 |
| 360 // Pass value, slot and vector through the stack. |
| 361 static const int kStackArgumentsCount = kPassLastArgsOnStack ? 3 : 0; |
| 349 }; | 362 }; |
| 350 | 363 |
| 351 class LoadWithVectorDescriptor : public LoadDescriptor { | 364 class LoadWithVectorDescriptor : public LoadDescriptor { |
| 352 public: | 365 public: |
| 353 DEFINE_PARAMETERS(kReceiver, kName, kSlot, kVector) | 366 DEFINE_PARAMETERS(kReceiver, kName, kSlot, kVector) |
| 354 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadWithVectorDescriptor, | 367 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadWithVectorDescriptor, |
| 355 LoadDescriptor) | 368 LoadDescriptor) |
| 356 | 369 |
| 357 static const Register VectorRegister(); | 370 static const Register VectorRegister(); |
| 358 }; | 371 }; |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 } // namespace v8 | 809 } // namespace v8 |
| 797 | 810 |
| 798 | 811 |
| 799 #if V8_TARGET_ARCH_ARM64 | 812 #if V8_TARGET_ARCH_ARM64 |
| 800 #include "src/arm64/interface-descriptors-arm64.h" | 813 #include "src/arm64/interface-descriptors-arm64.h" |
| 801 #elif V8_TARGET_ARCH_ARM | 814 #elif V8_TARGET_ARCH_ARM |
| 802 #include "src/arm/interface-descriptors-arm.h" | 815 #include "src/arm/interface-descriptors-arm.h" |
| 803 #endif | 816 #endif |
| 804 | 817 |
| 805 #endif // V8_CALL_INTERFACE_DESCRIPTOR_H_ | 818 #endif // V8_CALL_INTERFACE_DESCRIPTOR_H_ |
| OLD | NEW |