| 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 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 DECLARE_DESCRIPTOR_WITH_BASE(name, base) \ | 278 DECLARE_DESCRIPTOR_WITH_BASE(name, base) \ |
| 279 protected: \ | 279 protected: \ |
| 280 FunctionType* BuildCallInterfaceDescriptorFunctionType( \ | 280 FunctionType* BuildCallInterfaceDescriptorFunctionType( \ |
| 281 Isolate* isolate, int register_param_count) override { \ | 281 Isolate* isolate, int register_param_count) override { \ |
| 282 return BuildCallInterfaceDescriptorFunctionTypeWithArg( \ | 282 return BuildCallInterfaceDescriptorFunctionTypeWithArg( \ |
| 283 isolate, register_param_count, arg); \ | 283 isolate, register_param_count, arg); \ |
| 284 } \ | 284 } \ |
| 285 \ | 285 \ |
| 286 public: | 286 public: |
| 287 | 287 |
| 288 #define DEFINE_PARAMETERS(...) \ |
| 289 enum ParameterIndices { \ |
| 290 __VA_ARGS__, \ |
| 291 \ |
| 292 kParameterCount, \ |
| 293 kContext = kParameterCount /* implicit parameter */ \ |
| 294 }; |
| 295 |
| 288 class VoidDescriptor : public CallInterfaceDescriptor { | 296 class VoidDescriptor : public CallInterfaceDescriptor { |
| 289 public: | 297 public: |
| 290 DECLARE_DESCRIPTOR(VoidDescriptor, CallInterfaceDescriptor) | 298 DECLARE_DESCRIPTOR(VoidDescriptor, CallInterfaceDescriptor) |
| 291 }; | 299 }; |
| 292 | 300 |
| 293 class ContextOnlyDescriptor : public CallInterfaceDescriptor { | 301 class ContextOnlyDescriptor : public CallInterfaceDescriptor { |
| 294 public: | 302 public: |
| 295 DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor) | 303 DECLARE_DESCRIPTOR(ContextOnlyDescriptor, CallInterfaceDescriptor) |
| 296 }; | 304 }; |
| 297 | 305 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 class OnStackWith7ArgsDescriptor : public OnStackArgsDescriptorBase { | 366 class OnStackWith7ArgsDescriptor : public OnStackArgsDescriptorBase { |
| 359 public: | 367 public: |
| 360 DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith7ArgsDescriptor, | 368 DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG(OnStackWith7ArgsDescriptor, |
| 361 OnStackArgsDescriptorBase, | 369 OnStackArgsDescriptorBase, |
| 362 7) | 370 7) |
| 363 }; | 371 }; |
| 364 | 372 |
| 365 // LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs. | 373 // LoadDescriptor is used by all stubs that implement Load/KeyedLoad ICs. |
| 366 class LoadDescriptor : public CallInterfaceDescriptor { | 374 class LoadDescriptor : public CallInterfaceDescriptor { |
| 367 public: | 375 public: |
| 376 DEFINE_PARAMETERS(kReceiver, kName, kSlot) |
| 368 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadDescriptor, | 377 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadDescriptor, |
| 369 CallInterfaceDescriptor) | 378 CallInterfaceDescriptor) |
| 370 | 379 |
| 371 enum ParameterIndices { kReceiverIndex, kNameIndex, kSlotIndex }; | |
| 372 static const Register ReceiverRegister(); | 380 static const Register ReceiverRegister(); |
| 373 static const Register NameRegister(); | 381 static const Register NameRegister(); |
| 374 static const Register SlotRegister(); | 382 static const Register SlotRegister(); |
| 375 }; | 383 }; |
| 376 | 384 |
| 377 class LoadGlobalDescriptor : public CallInterfaceDescriptor { | 385 class LoadGlobalDescriptor : public CallInterfaceDescriptor { |
| 378 public: | 386 public: |
| 387 DEFINE_PARAMETERS(kSlot) |
| 379 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadGlobalDescriptor, | 388 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadGlobalDescriptor, |
| 380 CallInterfaceDescriptor) | 389 CallInterfaceDescriptor) |
| 381 | 390 |
| 382 enum ParameterIndices { kSlotIndex }; | |
| 383 | |
| 384 static const Register SlotRegister() { | 391 static const Register SlotRegister() { |
| 385 return LoadDescriptor::SlotRegister(); | 392 return LoadDescriptor::SlotRegister(); |
| 386 } | 393 } |
| 387 }; | 394 }; |
| 388 | 395 |
| 389 class StoreDescriptor : public CallInterfaceDescriptor { | 396 class StoreDescriptor : public CallInterfaceDescriptor { |
| 390 public: | 397 public: |
| 398 DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot) |
| 391 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreDescriptor, | 399 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreDescriptor, |
| 392 CallInterfaceDescriptor) | 400 CallInterfaceDescriptor) |
| 393 | 401 |
| 394 enum ParameterIndices { kReceiverIndex, kNameIndex, kValueIndex, kSlotIndex }; | |
| 395 | |
| 396 static const Register ReceiverRegister(); | 402 static const Register ReceiverRegister(); |
| 397 static const Register NameRegister(); | 403 static const Register NameRegister(); |
| 398 static const Register ValueRegister(); | 404 static const Register ValueRegister(); |
| 399 static const Register SlotRegister(); | 405 static const Register SlotRegister(); |
| 400 }; | 406 }; |
| 401 | 407 |
| 402 | 408 |
| 403 class StoreTransitionDescriptor : public StoreDescriptor { | 409 class StoreTransitionDescriptor : public StoreDescriptor { |
| 404 public: | 410 public: |
| 411 DEFINE_PARAMETERS(kReceiver, kName, kValue, kMap) |
| 405 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreTransitionDescriptor, | 412 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreTransitionDescriptor, |
| 406 StoreDescriptor) | 413 StoreDescriptor) |
| 407 | 414 |
| 408 // Extends StoreDescriptor with Map parameter. | |
| 409 enum ParameterIndices { | |
| 410 kReceiverIndex, | |
| 411 kNameIndex, | |
| 412 kValueIndex, | |
| 413 kMapIndex, | |
| 414 kParameterCount | |
| 415 }; | |
| 416 | |
| 417 static const Register MapRegister(); | 415 static const Register MapRegister(); |
| 418 }; | 416 }; |
| 419 | 417 |
| 420 | 418 |
| 421 class VectorStoreTransitionDescriptor : public StoreDescriptor { | 419 class VectorStoreTransitionDescriptor : public StoreDescriptor { |
| 422 public: | 420 public: |
| 423 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(VectorStoreTransitionDescriptor, | 421 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(VectorStoreTransitionDescriptor, |
| 424 StoreDescriptor) | 422 StoreDescriptor) |
| 425 | 423 |
| 424 // TODO(ishell): use DEFINE_PARAMETERS macro here |
| 426 // Extends StoreDescriptor with Map parameter. | 425 // Extends StoreDescriptor with Map parameter. |
| 427 enum ParameterIndices { | 426 enum ParameterIndices { |
| 428 kReceiverIndex = 0, | 427 kReceiver = 0, |
| 429 kNameIndex = 1, | 428 kName = 1, |
| 430 kValueIndex = 2, | 429 kValue = 2, |
| 431 | 430 |
| 432 kMapIndex = 3, | 431 kMap = 3, |
| 433 | 432 |
| 434 kSlotIndex = 4, // not present on ia32. | 433 kSlot = 4, // not present on ia32. |
| 435 kVirtualSlotVectorIndex = 4, | 434 kVirtualSlotVector = 4, |
| 436 | 435 |
| 437 kVectorIndex = 5 | 436 kVector = 5 |
| 438 }; | 437 }; |
| 439 | 438 |
| 440 static const Register MapRegister(); | 439 static const Register MapRegister(); |
| 441 static const Register SlotRegister(); | 440 static const Register SlotRegister(); |
| 442 static const Register VectorRegister(); | 441 static const Register VectorRegister(); |
| 443 }; | 442 }; |
| 444 | 443 |
| 445 class StoreWithVectorDescriptor : public StoreDescriptor { | 444 class StoreWithVectorDescriptor : public StoreDescriptor { |
| 446 public: | 445 public: |
| 446 DEFINE_PARAMETERS(kReceiver, kName, kValue, kSlot, kVector) |
| 447 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreWithVectorDescriptor, | 447 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreWithVectorDescriptor, |
| 448 StoreDescriptor) | 448 StoreDescriptor) |
| 449 | 449 |
| 450 enum ParameterIndices { | |
| 451 kReceiverIndex, | |
| 452 kNameIndex, | |
| 453 kValueIndex, | |
| 454 kSlotIndex, | |
| 455 kVectorIndex | |
| 456 }; | |
| 457 | |
| 458 static const Register VectorRegister(); | 450 static const Register VectorRegister(); |
| 459 }; | 451 }; |
| 460 | 452 |
| 461 | |
| 462 class LoadWithVectorDescriptor : public LoadDescriptor { | 453 class LoadWithVectorDescriptor : public LoadDescriptor { |
| 463 public: | 454 public: |
| 455 DEFINE_PARAMETERS(kReceiver, kName, kSlot, kVector) |
| 464 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadWithVectorDescriptor, | 456 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadWithVectorDescriptor, |
| 465 LoadDescriptor) | 457 LoadDescriptor) |
| 466 | 458 |
| 467 enum ParameterIndices { | |
| 468 kReceiverIndex, | |
| 469 kNameIndex, | |
| 470 kSlotIndex, | |
| 471 kVectorIndex | |
| 472 }; | |
| 473 | |
| 474 static const Register VectorRegister(); | 459 static const Register VectorRegister(); |
| 475 }; | 460 }; |
| 476 | 461 |
| 477 class LoadGlobalWithVectorDescriptor : public LoadGlobalDescriptor { | 462 class LoadGlobalWithVectorDescriptor : public LoadGlobalDescriptor { |
| 478 public: | 463 public: |
| 464 DEFINE_PARAMETERS(kSlot, kVector) |
| 479 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadGlobalWithVectorDescriptor, | 465 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(LoadGlobalWithVectorDescriptor, |
| 480 LoadGlobalDescriptor) | 466 LoadGlobalDescriptor) |
| 481 | 467 |
| 482 enum ParameterIndices { kSlotIndex, kVectorIndex }; | |
| 483 | |
| 484 static const Register VectorRegister() { | 468 static const Register VectorRegister() { |
| 485 return LoadWithVectorDescriptor::VectorRegister(); | 469 return LoadWithVectorDescriptor::VectorRegister(); |
| 486 } | 470 } |
| 487 }; | 471 }; |
| 488 | 472 |
| 489 class FastNewClosureDescriptor : public CallInterfaceDescriptor { | 473 class FastNewClosureDescriptor : public CallInterfaceDescriptor { |
| 490 public: | 474 public: |
| 491 DECLARE_DESCRIPTOR(FastNewClosureDescriptor, CallInterfaceDescriptor) | 475 DECLARE_DESCRIPTOR(FastNewClosureDescriptor, CallInterfaceDescriptor) |
| 492 }; | 476 }; |
| 493 | 477 |
| 494 class FastNewFunctionContextDescriptor : public CallInterfaceDescriptor { | 478 class FastNewFunctionContextDescriptor : public CallInterfaceDescriptor { |
| 495 public: | 479 public: |
| 480 DEFINE_PARAMETERS(kFunction) |
| 496 DECLARE_DESCRIPTOR(FastNewFunctionContextDescriptor, CallInterfaceDescriptor) | 481 DECLARE_DESCRIPTOR(FastNewFunctionContextDescriptor, CallInterfaceDescriptor) |
| 497 enum ParameterIndices { kFunctionIndex, kContextIndex }; | |
| 498 }; | 482 }; |
| 499 | 483 |
| 500 class FastNewObjectDescriptor : public CallInterfaceDescriptor { | 484 class FastNewObjectDescriptor : public CallInterfaceDescriptor { |
| 501 public: | 485 public: |
| 502 DECLARE_DESCRIPTOR(FastNewObjectDescriptor, CallInterfaceDescriptor) | 486 DECLARE_DESCRIPTOR(FastNewObjectDescriptor, CallInterfaceDescriptor) |
| 503 }; | 487 }; |
| 504 | 488 |
| 505 class FastNewRestParameterDescriptor : public CallInterfaceDescriptor { | 489 class FastNewRestParameterDescriptor : public CallInterfaceDescriptor { |
| 506 public: | 490 public: |
| 507 DECLARE_DESCRIPTOR(FastNewRestParameterDescriptor, CallInterfaceDescriptor) | 491 DECLARE_DESCRIPTOR(FastNewRestParameterDescriptor, CallInterfaceDescriptor) |
| 508 }; | 492 }; |
| 509 | 493 |
| 510 class FastNewSloppyArgumentsDescriptor : public CallInterfaceDescriptor { | 494 class FastNewSloppyArgumentsDescriptor : public CallInterfaceDescriptor { |
| 511 public: | 495 public: |
| 512 DECLARE_DESCRIPTOR(FastNewSloppyArgumentsDescriptor, | 496 DECLARE_DESCRIPTOR(FastNewSloppyArgumentsDescriptor, |
| 513 CallInterfaceDescriptor) | 497 CallInterfaceDescriptor) |
| 514 }; | 498 }; |
| 515 | 499 |
| 516 class FastNewStrictArgumentsDescriptor : public CallInterfaceDescriptor { | 500 class FastNewStrictArgumentsDescriptor : public CallInterfaceDescriptor { |
| 517 public: | 501 public: |
| 518 DECLARE_DESCRIPTOR(FastNewStrictArgumentsDescriptor, | 502 DECLARE_DESCRIPTOR(FastNewStrictArgumentsDescriptor, |
| 519 CallInterfaceDescriptor) | 503 CallInterfaceDescriptor) |
| 520 }; | 504 }; |
| 521 | 505 |
| 522 class TypeConversionDescriptor final : public CallInterfaceDescriptor { | 506 class TypeConversionDescriptor final : public CallInterfaceDescriptor { |
| 523 public: | 507 public: |
| 524 enum ParameterIndices { kArgumentIndex }; | 508 DEFINE_PARAMETERS(kArgument) |
| 525 | |
| 526 DECLARE_DESCRIPTOR(TypeConversionDescriptor, CallInterfaceDescriptor) | 509 DECLARE_DESCRIPTOR(TypeConversionDescriptor, CallInterfaceDescriptor) |
| 527 | 510 |
| 528 static const Register ArgumentRegister(); | 511 static const Register ArgumentRegister(); |
| 529 }; | 512 }; |
| 530 | 513 |
| 531 class HasPropertyDescriptor final : public CallInterfaceDescriptor { | 514 class HasPropertyDescriptor final : public CallInterfaceDescriptor { |
| 532 public: | 515 public: |
| 533 enum ParameterIndices { kKeyIndex, kObjectIndex }; | 516 DEFINE_PARAMETERS(kKey, kObject) |
| 534 | 517 DECLARE_DEFAULT_DESCRIPTOR(HasPropertyDescriptor, CallInterfaceDescriptor, |
| 535 DECLARE_DEFAULT_DESCRIPTOR(HasPropertyDescriptor, CallInterfaceDescriptor, 2) | 518 kParameterCount) |
| 536 }; | 519 }; |
| 537 | 520 |
| 538 class ForInFilterDescriptor final : public CallInterfaceDescriptor { | 521 class ForInFilterDescriptor final : public CallInterfaceDescriptor { |
| 539 public: | 522 public: |
| 540 enum ParameterIndices { kKeyIndex, kObjectIndex }; | 523 DEFINE_PARAMETERS(kKey, kObject) |
| 541 | 524 DECLARE_DEFAULT_DESCRIPTOR(ForInFilterDescriptor, CallInterfaceDescriptor, |
| 542 DECLARE_DEFAULT_DESCRIPTOR(ForInFilterDescriptor, CallInterfaceDescriptor, 2) | 525 kParameterCount) |
| 543 }; | 526 }; |
| 544 | 527 |
| 545 class GetPropertyDescriptor final : public CallInterfaceDescriptor { | 528 class GetPropertyDescriptor final : public CallInterfaceDescriptor { |
| 546 public: | 529 public: |
| 547 enum ParameterIndices { kObjectIndex, kKeyIndex }; | 530 DEFINE_PARAMETERS(kObject, kKey) |
| 548 | 531 DECLARE_DEFAULT_DESCRIPTOR(GetPropertyDescriptor, CallInterfaceDescriptor, |
| 549 DECLARE_DEFAULT_DESCRIPTOR(GetPropertyDescriptor, CallInterfaceDescriptor, 2) | 532 kParameterCount) |
| 550 }; | 533 }; |
| 551 | 534 |
| 552 class TypeofDescriptor : public CallInterfaceDescriptor { | 535 class TypeofDescriptor : public CallInterfaceDescriptor { |
| 553 public: | 536 public: |
| 537 DEFINE_PARAMETERS(kObject) |
| 554 DECLARE_DESCRIPTOR(TypeofDescriptor, CallInterfaceDescriptor) | 538 DECLARE_DESCRIPTOR(TypeofDescriptor, CallInterfaceDescriptor) |
| 555 }; | 539 }; |
| 556 | 540 |
| 557 | 541 |
| 558 class FastCloneRegExpDescriptor : public CallInterfaceDescriptor { | 542 class FastCloneRegExpDescriptor : public CallInterfaceDescriptor { |
| 559 public: | 543 public: |
| 544 DEFINE_PARAMETERS(kClosure, kLiteralIndex, kPattern, kFlags) |
| 560 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneRegExpDescriptor, | 545 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneRegExpDescriptor, |
| 561 CallInterfaceDescriptor) | 546 CallInterfaceDescriptor) |
| 562 }; | 547 }; |
| 563 | 548 |
| 564 | 549 |
| 565 class FastCloneShallowArrayDescriptor : public CallInterfaceDescriptor { | 550 class FastCloneShallowArrayDescriptor : public CallInterfaceDescriptor { |
| 566 public: | 551 public: |
| 552 DEFINE_PARAMETERS(kClosure, kLiteralIndex, kConstantElements) |
| 567 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneShallowArrayDescriptor, | 553 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(FastCloneShallowArrayDescriptor, |
| 568 CallInterfaceDescriptor) | 554 CallInterfaceDescriptor) |
| 569 }; | 555 }; |
| 570 | 556 |
| 571 | 557 |
| 572 class FastCloneShallowObjectDescriptor : public CallInterfaceDescriptor { | 558 class FastCloneShallowObjectDescriptor : public CallInterfaceDescriptor { |
| 573 public: | 559 public: |
| 574 DECLARE_DESCRIPTOR(FastCloneShallowObjectDescriptor, CallInterfaceDescriptor) | 560 DECLARE_DESCRIPTOR(FastCloneShallowObjectDescriptor, CallInterfaceDescriptor) |
| 575 }; | 561 }; |
| 576 | 562 |
| 577 | 563 |
| 578 class CreateAllocationSiteDescriptor : public CallInterfaceDescriptor { | 564 class CreateAllocationSiteDescriptor : public CallInterfaceDescriptor { |
| 579 public: | 565 public: |
| 566 DEFINE_PARAMETERS(kVector, kSlot) |
| 580 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CreateAllocationSiteDescriptor, | 567 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CreateAllocationSiteDescriptor, |
| 581 CallInterfaceDescriptor) | 568 CallInterfaceDescriptor) |
| 582 }; | 569 }; |
| 583 | 570 |
| 584 | 571 |
| 585 class CreateWeakCellDescriptor : public CallInterfaceDescriptor { | 572 class CreateWeakCellDescriptor : public CallInterfaceDescriptor { |
| 586 public: | 573 public: |
| 587 enum ParameterIndices { | 574 DEFINE_PARAMETERS(kVector, kSlot, kValue) |
| 588 kVectorIndex, | |
| 589 kSlotIndex, | |
| 590 kValueIndex, | |
| 591 kParameterCount | |
| 592 }; | |
| 593 | |
| 594 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CreateWeakCellDescriptor, | 575 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CreateWeakCellDescriptor, |
| 595 CallInterfaceDescriptor) | 576 CallInterfaceDescriptor) |
| 596 }; | 577 }; |
| 597 | 578 |
| 598 | 579 |
| 599 class CallTrampolineDescriptor : public CallInterfaceDescriptor { | 580 class CallTrampolineDescriptor : public CallInterfaceDescriptor { |
| 600 public: | 581 public: |
| 582 DEFINE_PARAMETERS(kFunction, kActualArgumentsCount) |
| 601 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CallTrampolineDescriptor, | 583 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(CallTrampolineDescriptor, |
| 602 CallInterfaceDescriptor) | 584 CallInterfaceDescriptor) |
| 603 }; | 585 }; |
| 604 | 586 |
| 605 | 587 |
| 606 class ConstructStubDescriptor : public CallInterfaceDescriptor { | 588 class ConstructStubDescriptor : public CallInterfaceDescriptor { |
| 607 public: | 589 public: |
| 590 DEFINE_PARAMETERS(kFunction, kNewTarget, kActualArgumentsCount, |
| 591 kAllocationSite) |
| 608 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ConstructStubDescriptor, | 592 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ConstructStubDescriptor, |
| 609 CallInterfaceDescriptor) | 593 CallInterfaceDescriptor) |
| 610 }; | 594 }; |
| 611 | 595 |
| 612 | 596 |
| 613 class ConstructTrampolineDescriptor : public CallInterfaceDescriptor { | 597 class ConstructTrampolineDescriptor : public CallInterfaceDescriptor { |
| 614 public: | 598 public: |
| 599 DEFINE_PARAMETERS(kFunction, kNewTarget, kActualArgumentsCount) |
| 615 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ConstructTrampolineDescriptor, | 600 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ConstructTrampolineDescriptor, |
| 616 CallInterfaceDescriptor) | 601 CallInterfaceDescriptor) |
| 617 }; | 602 }; |
| 618 | 603 |
| 619 | 604 |
| 620 class CallFunctionDescriptor : public CallInterfaceDescriptor { | 605 class CallFunctionDescriptor : public CallInterfaceDescriptor { |
| 621 public: | 606 public: |
| 622 DECLARE_DESCRIPTOR(CallFunctionDescriptor, CallInterfaceDescriptor) | 607 DECLARE_DESCRIPTOR(CallFunctionDescriptor, CallInterfaceDescriptor) |
| 623 }; | 608 }; |
| 624 | 609 |
| 625 | 610 |
| 626 class CallFunctionWithFeedbackDescriptor : public CallInterfaceDescriptor { | 611 class CallFunctionWithFeedbackDescriptor : public CallInterfaceDescriptor { |
| 627 public: | 612 public: |
| 613 DEFINE_PARAMETERS(kFunction, kSlot) |
| 628 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( | 614 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( |
| 629 CallFunctionWithFeedbackDescriptor, CallInterfaceDescriptor) | 615 CallFunctionWithFeedbackDescriptor, CallInterfaceDescriptor) |
| 630 }; | 616 }; |
| 631 | 617 |
| 632 | 618 |
| 633 class CallFunctionWithFeedbackAndVectorDescriptor | 619 class CallFunctionWithFeedbackAndVectorDescriptor |
| 634 : public CallInterfaceDescriptor { | 620 : public CallInterfaceDescriptor { |
| 635 public: | 621 public: |
| 622 DEFINE_PARAMETERS(kFunction, kSlot, kVector) |
| 636 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( | 623 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( |
| 637 CallFunctionWithFeedbackAndVectorDescriptor, CallInterfaceDescriptor) | 624 CallFunctionWithFeedbackAndVectorDescriptor, CallInterfaceDescriptor) |
| 638 }; | 625 }; |
| 639 | 626 |
| 640 | 627 |
| 641 class CallConstructDescriptor : public CallInterfaceDescriptor { | 628 class CallConstructDescriptor : public CallInterfaceDescriptor { |
| 642 public: | 629 public: |
| 643 DECLARE_DESCRIPTOR(CallConstructDescriptor, CallInterfaceDescriptor) | 630 DECLARE_DESCRIPTOR(CallConstructDescriptor, CallInterfaceDescriptor) |
| 644 }; | 631 }; |
| 645 | 632 |
| 646 | 633 |
| 647 class RegExpConstructResultDescriptor : public CallInterfaceDescriptor { | 634 class RegExpConstructResultDescriptor : public CallInterfaceDescriptor { |
| 648 public: | 635 public: |
| 636 DEFINE_PARAMETERS(kLength, kIndex, kInput) |
| 649 DECLARE_DESCRIPTOR(RegExpConstructResultDescriptor, CallInterfaceDescriptor) | 637 DECLARE_DESCRIPTOR(RegExpConstructResultDescriptor, CallInterfaceDescriptor) |
| 650 }; | 638 }; |
| 651 | 639 |
| 652 | 640 |
| 653 class StoreGlobalViaContextDescriptor : public CallInterfaceDescriptor { | 641 class StoreGlobalViaContextDescriptor : public CallInterfaceDescriptor { |
| 654 public: | 642 public: |
| 643 DEFINE_PARAMETERS(kSlot, kValue) |
| 655 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreGlobalViaContextDescriptor, | 644 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(StoreGlobalViaContextDescriptor, |
| 656 CallInterfaceDescriptor) | 645 CallInterfaceDescriptor) |
| 657 | 646 |
| 658 static const Register SlotRegister(); | 647 static const Register SlotRegister(); |
| 659 static const Register ValueRegister(); | 648 static const Register ValueRegister(); |
| 660 }; | 649 }; |
| 661 | 650 |
| 662 | 651 |
| 663 class TransitionElementsKindDescriptor : public CallInterfaceDescriptor { | 652 class TransitionElementsKindDescriptor : public CallInterfaceDescriptor { |
| 664 public: | 653 public: |
| 654 DEFINE_PARAMETERS(kObject, kMap) |
| 665 DECLARE_DESCRIPTOR(TransitionElementsKindDescriptor, CallInterfaceDescriptor) | 655 DECLARE_DESCRIPTOR(TransitionElementsKindDescriptor, CallInterfaceDescriptor) |
| 666 }; | 656 }; |
| 667 | 657 |
| 668 | 658 |
| 669 class AllocateHeapNumberDescriptor : public CallInterfaceDescriptor { | 659 class AllocateHeapNumberDescriptor : public CallInterfaceDescriptor { |
| 670 public: | 660 public: |
| 671 DECLARE_DESCRIPTOR(AllocateHeapNumberDescriptor, CallInterfaceDescriptor) | 661 DECLARE_DESCRIPTOR(AllocateHeapNumberDescriptor, CallInterfaceDescriptor) |
| 672 }; | 662 }; |
| 673 | 663 |
| 674 #define SIMD128_ALLOC_DESC(TYPE, Type, type, lane_count, lane_type) \ | 664 #define SIMD128_ALLOC_DESC(TYPE, Type, type, lane_count, lane_type) \ |
| 675 class Allocate##Type##Descriptor : public CallInterfaceDescriptor { \ | 665 class Allocate##Type##Descriptor : public CallInterfaceDescriptor { \ |
| 676 public: \ | 666 public: \ |
| 677 DECLARE_DESCRIPTOR(Allocate##Type##Descriptor, CallInterfaceDescriptor) \ | 667 DECLARE_DESCRIPTOR(Allocate##Type##Descriptor, CallInterfaceDescriptor) \ |
| 678 }; | 668 }; |
| 679 SIMD128_TYPES(SIMD128_ALLOC_DESC) | 669 SIMD128_TYPES(SIMD128_ALLOC_DESC) |
| 680 #undef SIMD128_ALLOC_DESC | 670 #undef SIMD128_ALLOC_DESC |
| 681 | 671 |
| 682 class ArrayNoArgumentConstructorDescriptor : public CallInterfaceDescriptor { | 672 class ArrayNoArgumentConstructorDescriptor : public CallInterfaceDescriptor { |
| 683 public: | 673 public: |
| 674 DEFINE_PARAMETERS(kFunction, kAllocationSite, kActualArgumentsCount, |
| 675 kFunctionParameter) |
| 684 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( | 676 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( |
| 685 ArrayNoArgumentConstructorDescriptor, CallInterfaceDescriptor) | 677 ArrayNoArgumentConstructorDescriptor, CallInterfaceDescriptor) |
| 686 enum ParameterIndices { | |
| 687 kFunctionIndex, | |
| 688 kAllocationSiteIndex, | |
| 689 kArgumentCountIndex, | |
| 690 kFunctionParameterIndex, | |
| 691 kContextIndex | |
| 692 }; | |
| 693 }; | 678 }; |
| 694 | 679 |
| 695 class ArraySingleArgumentConstructorDescriptor | 680 class ArraySingleArgumentConstructorDescriptor |
| 696 : public CallInterfaceDescriptor { | 681 : public CallInterfaceDescriptor { |
| 697 public: | 682 public: |
| 683 DEFINE_PARAMETERS(kFunction, kAllocationSite, kActualArgumentsCount, |
| 684 kFunctionParameter, kArraySizeSmiParameter) |
| 698 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( | 685 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( |
| 699 ArraySingleArgumentConstructorDescriptor, CallInterfaceDescriptor) | 686 ArraySingleArgumentConstructorDescriptor, CallInterfaceDescriptor) |
| 700 enum ParameterIndices { | |
| 701 kFunctionIndex, | |
| 702 kAllocationSiteIndex, | |
| 703 kArgumentCountIndex, | |
| 704 kFunctionParameterIndex, | |
| 705 kArraySizeSmiParameterIndex, | |
| 706 kContextIndex | |
| 707 }; | |
| 708 }; | 687 }; |
| 709 | 688 |
| 710 class ArrayNArgumentsConstructorDescriptor : public CallInterfaceDescriptor { | 689 class ArrayNArgumentsConstructorDescriptor : public CallInterfaceDescriptor { |
| 711 public: | 690 public: |
| 691 DEFINE_PARAMETERS(kFunction, kAllocationSite, kActualArgumentsCount) |
| 712 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( | 692 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE( |
| 713 ArrayNArgumentsConstructorDescriptor, CallInterfaceDescriptor) | 693 ArrayNArgumentsConstructorDescriptor, CallInterfaceDescriptor) |
| 714 enum ParameterIndices { | |
| 715 kFunctionIndex, | |
| 716 kAllocationSiteIndex, | |
| 717 kArgumentCountIndex, | |
| 718 kContextIndex | |
| 719 }; | |
| 720 }; | 694 }; |
| 721 | 695 |
| 722 | 696 |
| 723 class CompareDescriptor : public CallInterfaceDescriptor { | 697 class CompareDescriptor : public CallInterfaceDescriptor { |
| 724 public: | 698 public: |
| 699 DEFINE_PARAMETERS(kLeft, kRight) |
| 725 DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor) | 700 DECLARE_DESCRIPTOR(CompareDescriptor, CallInterfaceDescriptor) |
| 726 }; | 701 }; |
| 727 | 702 |
| 728 | 703 |
| 729 class BinaryOpDescriptor : public CallInterfaceDescriptor { | 704 class BinaryOpDescriptor : public CallInterfaceDescriptor { |
| 730 public: | 705 public: |
| 706 DEFINE_PARAMETERS(kLeft, kRight) |
| 731 DECLARE_DESCRIPTOR(BinaryOpDescriptor, CallInterfaceDescriptor) | 707 DECLARE_DESCRIPTOR(BinaryOpDescriptor, CallInterfaceDescriptor) |
| 732 }; | 708 }; |
| 733 | 709 |
| 734 | 710 |
| 735 class BinaryOpWithAllocationSiteDescriptor : public CallInterfaceDescriptor { | 711 class BinaryOpWithAllocationSiteDescriptor : public CallInterfaceDescriptor { |
| 736 public: | 712 public: |
| 713 DEFINE_PARAMETERS(kAllocationSite, kLeft, kRight) |
| 737 DECLARE_DESCRIPTOR(BinaryOpWithAllocationSiteDescriptor, | 714 DECLARE_DESCRIPTOR(BinaryOpWithAllocationSiteDescriptor, |
| 738 CallInterfaceDescriptor) | 715 CallInterfaceDescriptor) |
| 739 }; | 716 }; |
| 740 | 717 |
| 741 class CountOpDescriptor final : public CallInterfaceDescriptor { | 718 class CountOpDescriptor final : public CallInterfaceDescriptor { |
| 742 public: | 719 public: |
| 743 DECLARE_DESCRIPTOR(CountOpDescriptor, CallInterfaceDescriptor) | 720 DECLARE_DESCRIPTOR(CountOpDescriptor, CallInterfaceDescriptor) |
| 744 }; | 721 }; |
| 745 | 722 |
| 746 class StringAddDescriptor : public CallInterfaceDescriptor { | 723 class StringAddDescriptor : public CallInterfaceDescriptor { |
| 747 public: | 724 public: |
| 725 DEFINE_PARAMETERS(kLeft, kRight) |
| 748 DECLARE_DESCRIPTOR(StringAddDescriptor, CallInterfaceDescriptor) | 726 DECLARE_DESCRIPTOR(StringAddDescriptor, CallInterfaceDescriptor) |
| 749 }; | 727 }; |
| 750 | 728 |
| 751 | 729 |
| 752 class StringCompareDescriptor : public CallInterfaceDescriptor { | 730 class StringCompareDescriptor : public CallInterfaceDescriptor { |
| 753 public: | 731 public: |
| 732 DEFINE_PARAMETERS(kLeft, kRight) |
| 754 DECLARE_DESCRIPTOR(StringCompareDescriptor, CallInterfaceDescriptor) | 733 DECLARE_DESCRIPTOR(StringCompareDescriptor, CallInterfaceDescriptor) |
| 755 | 734 |
| 756 enum ParameterIndices { kLeftIndex, kRightIndex, kParameterCount }; | |
| 757 static const Register LeftRegister(); | 735 static const Register LeftRegister(); |
| 758 static const Register RightRegister(); | 736 static const Register RightRegister(); |
| 759 }; | 737 }; |
| 760 | 738 |
| 761 | 739 // TODO(ishell): not used, remove. |
| 762 class KeyedDescriptor : public CallInterfaceDescriptor { | 740 class KeyedDescriptor : public CallInterfaceDescriptor { |
| 763 public: | 741 public: |
| 764 DECLARE_DESCRIPTOR(KeyedDescriptor, CallInterfaceDescriptor) | 742 DECLARE_DESCRIPTOR(KeyedDescriptor, CallInterfaceDescriptor) |
| 765 }; | 743 }; |
| 766 | 744 |
| 767 | 745 // TODO(ishell): not used, remove |
| 768 class NamedDescriptor : public CallInterfaceDescriptor { | 746 class NamedDescriptor : public CallInterfaceDescriptor { |
| 769 public: | 747 public: |
| 770 DECLARE_DESCRIPTOR(NamedDescriptor, CallInterfaceDescriptor) | 748 DECLARE_DESCRIPTOR(NamedDescriptor, CallInterfaceDescriptor) |
| 771 }; | 749 }; |
| 772 | 750 |
| 773 | 751 // TODO(ishell): not used, remove. |
| 774 class CallHandlerDescriptor : public CallInterfaceDescriptor { | 752 class CallHandlerDescriptor : public CallInterfaceDescriptor { |
| 775 public: | 753 public: |
| 776 DECLARE_DESCRIPTOR(CallHandlerDescriptor, CallInterfaceDescriptor) | 754 DECLARE_DESCRIPTOR(CallHandlerDescriptor, CallInterfaceDescriptor) |
| 777 }; | 755 }; |
| 778 | 756 |
| 779 | 757 |
| 780 class ArgumentAdaptorDescriptor : public CallInterfaceDescriptor { | 758 class ArgumentAdaptorDescriptor : public CallInterfaceDescriptor { |
| 781 public: | 759 public: |
| 760 DEFINE_PARAMETERS(kFunction, kNewTarget, kActualArgumentsCount, |
| 761 kExpectedArgumentsCount) |
| 782 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ArgumentAdaptorDescriptor, | 762 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(ArgumentAdaptorDescriptor, |
| 783 CallInterfaceDescriptor) | 763 CallInterfaceDescriptor) |
| 784 }; | 764 }; |
| 785 | 765 |
| 786 // The ApiCallback*Descriptors have a lot of boilerplate. The superclass | 766 // The ApiCallback*Descriptors have a lot of boilerplate. The superclass |
| 787 // ApiCallbackDescriptorBase contains all the logic, and the | 767 // ApiCallbackDescriptorBase contains all the logic, and the |
| 788 // ApiCallbackWith*ArgsDescriptor merely instantiate these with a | 768 // ApiCallbackWith*ArgsDescriptor merely instantiate these with a |
| 789 // parameter for the number of args. | 769 // parameter for the number of args. |
| 790 // | 770 // |
| 791 // The base class is not meant to be instantiated directly and has no | 771 // The base class is not meant to be instantiated directly and has no |
| 792 // public constructors to ensure this is so. | 772 // public constructors to ensure this is so. |
| 793 // | 773 // |
| 794 // The simplest usage for all the ApiCallback*Descriptors is probably | 774 // The simplest usage for all the ApiCallback*Descriptors is probably |
| 795 // ApiCallbackDescriptorBase::ForArgs(isolate, argc) | 775 // ApiCallbackDescriptorBase::ForArgs(isolate, argc) |
| 796 // | 776 // |
| 797 class ApiCallbackDescriptorBase : public CallInterfaceDescriptor { | 777 class ApiCallbackDescriptorBase : public CallInterfaceDescriptor { |
| 798 public: | 778 public: |
| 779 DEFINE_PARAMETERS(kFunction, kCallData, kHolder, kApiFunctionAddress) |
| 799 static CallInterfaceDescriptor ForArgs(Isolate* isolate, int argc); | 780 static CallInterfaceDescriptor ForArgs(Isolate* isolate, int argc); |
| 800 | 781 |
| 801 protected: | 782 protected: |
| 802 ApiCallbackDescriptorBase(Isolate* isolate, CallDescriptors::Key key) | 783 ApiCallbackDescriptorBase(Isolate* isolate, CallDescriptors::Key key) |
| 803 : CallInterfaceDescriptor(isolate, key) {} | 784 : CallInterfaceDescriptor(isolate, key) {} |
| 804 void InitializePlatformSpecific(CallInterfaceDescriptorData* data) override; | 785 void InitializePlatformSpecific(CallInterfaceDescriptorData* data) override; |
| 805 FunctionType* BuildCallInterfaceDescriptorFunctionTypeWithArg( | 786 FunctionType* BuildCallInterfaceDescriptorFunctionTypeWithArg( |
| 806 Isolate* isolate, int parameter_count, int argc); | 787 Isolate* isolate, int parameter_count, int argc); |
| 807 }; | 788 }; |
| 808 | 789 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 | 831 |
| 851 class ApiCallbackWith7ArgsDescriptor : public ApiCallbackDescriptorBase { | 832 class ApiCallbackWith7ArgsDescriptor : public ApiCallbackDescriptorBase { |
| 852 public: | 833 public: |
| 853 DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG( | 834 DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG( |
| 854 ApiCallbackWith7ArgsDescriptor, ApiCallbackDescriptorBase, 7) | 835 ApiCallbackWith7ArgsDescriptor, ApiCallbackDescriptorBase, 7) |
| 855 }; | 836 }; |
| 856 | 837 |
| 857 | 838 |
| 858 class ApiGetterDescriptor : public CallInterfaceDescriptor { | 839 class ApiGetterDescriptor : public CallInterfaceDescriptor { |
| 859 public: | 840 public: |
| 841 DEFINE_PARAMETERS(kReceiver, kHolder, kCallback) |
| 860 DECLARE_DESCRIPTOR(ApiGetterDescriptor, CallInterfaceDescriptor) | 842 DECLARE_DESCRIPTOR(ApiGetterDescriptor, CallInterfaceDescriptor) |
| 861 | 843 |
| 862 static const Register ReceiverRegister(); | 844 static const Register ReceiverRegister(); |
| 863 static const Register HolderRegister(); | 845 static const Register HolderRegister(); |
| 864 static const Register CallbackRegister(); | 846 static const Register CallbackRegister(); |
| 865 }; | 847 }; |
| 866 | 848 |
| 867 class MathPowTaggedDescriptor : public CallInterfaceDescriptor { | 849 class MathPowTaggedDescriptor : public CallInterfaceDescriptor { |
| 868 public: | 850 public: |
| 851 DEFINE_PARAMETERS(kExponent) |
| 869 DECLARE_DESCRIPTOR(MathPowTaggedDescriptor, CallInterfaceDescriptor) | 852 DECLARE_DESCRIPTOR(MathPowTaggedDescriptor, CallInterfaceDescriptor) |
| 870 | 853 |
| 871 static const Register exponent(); | 854 static const Register exponent(); |
| 872 }; | 855 }; |
| 873 | 856 |
| 874 class MathPowIntegerDescriptor : public CallInterfaceDescriptor { | 857 class MathPowIntegerDescriptor : public CallInterfaceDescriptor { |
| 875 public: | 858 public: |
| 859 DEFINE_PARAMETERS(kExponent) |
| 876 DECLARE_DESCRIPTOR(MathPowIntegerDescriptor, CallInterfaceDescriptor) | 860 DECLARE_DESCRIPTOR(MathPowIntegerDescriptor, CallInterfaceDescriptor) |
| 877 | 861 |
| 878 static const Register exponent(); | 862 static const Register exponent(); |
| 879 }; | 863 }; |
| 880 | 864 |
| 881 class VarArgFunctionDescriptor : public CallInterfaceDescriptor { | 865 class VarArgFunctionDescriptor : public CallInterfaceDescriptor { |
| 882 public: | 866 public: |
| 867 DEFINE_PARAMETERS(kActualArgumentsCount) |
| 883 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(VarArgFunctionDescriptor, | 868 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(VarArgFunctionDescriptor, |
| 884 CallInterfaceDescriptor) | 869 CallInterfaceDescriptor) |
| 885 }; | 870 }; |
| 886 | 871 |
| 887 class GrowArrayElementsDescriptor : public CallInterfaceDescriptor { | 872 class GrowArrayElementsDescriptor : public CallInterfaceDescriptor { |
| 888 public: | 873 public: |
| 874 DEFINE_PARAMETERS(kObject, kKey) |
| 889 DECLARE_DESCRIPTOR(GrowArrayElementsDescriptor, CallInterfaceDescriptor) | 875 DECLARE_DESCRIPTOR(GrowArrayElementsDescriptor, CallInterfaceDescriptor) |
| 890 | 876 |
| 891 enum RegisterInfo { kObjectIndex, kKeyIndex }; | |
| 892 static const Register ObjectRegister(); | 877 static const Register ObjectRegister(); |
| 893 static const Register KeyRegister(); | 878 static const Register KeyRegister(); |
| 894 }; | 879 }; |
| 895 | 880 |
| 896 class InterpreterDispatchDescriptor : public CallInterfaceDescriptor { | 881 class InterpreterDispatchDescriptor : public CallInterfaceDescriptor { |
| 897 public: | 882 public: |
| 883 DEFINE_PARAMETERS(kAccumulator, kBytecodeOffset, kBytecodeArray, |
| 884 kDispatchTable) |
| 898 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(InterpreterDispatchDescriptor, | 885 DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE(InterpreterDispatchDescriptor, |
| 899 CallInterfaceDescriptor) | 886 CallInterfaceDescriptor) |
| 900 | |
| 901 static const int kAccumulatorParameter = 0; | |
| 902 static const int kBytecodeOffsetParameter = 1; | |
| 903 static const int kBytecodeArrayParameter = 2; | |
| 904 static const int kDispatchTableParameter = 3; | |
| 905 }; | 887 }; |
| 906 | 888 |
| 907 class InterpreterPushArgsAndCallDescriptor : public CallInterfaceDescriptor { | 889 class InterpreterPushArgsAndCallDescriptor : public CallInterfaceDescriptor { |
| 908 public: | 890 public: |
| 909 DECLARE_DESCRIPTOR(InterpreterPushArgsAndCallDescriptor, | 891 DECLARE_DESCRIPTOR(InterpreterPushArgsAndCallDescriptor, |
| 910 CallInterfaceDescriptor) | 892 CallInterfaceDescriptor) |
| 911 }; | 893 }; |
| 912 | 894 |
| 913 | 895 |
| 914 class InterpreterPushArgsAndConstructDescriptor | 896 class InterpreterPushArgsAndConstructDescriptor |
| (...skipping 11 matching lines...) Expand all Loading... |
| 926 | 908 |
| 927 class ResumeGeneratorDescriptor final : public CallInterfaceDescriptor { | 909 class ResumeGeneratorDescriptor final : public CallInterfaceDescriptor { |
| 928 public: | 910 public: |
| 929 DECLARE_DESCRIPTOR(ResumeGeneratorDescriptor, CallInterfaceDescriptor) | 911 DECLARE_DESCRIPTOR(ResumeGeneratorDescriptor, CallInterfaceDescriptor) |
| 930 }; | 912 }; |
| 931 | 913 |
| 932 #undef DECLARE_DESCRIPTOR_WITH_BASE | 914 #undef DECLARE_DESCRIPTOR_WITH_BASE |
| 933 #undef DECLARE_DESCRIPTOR | 915 #undef DECLARE_DESCRIPTOR |
| 934 #undef DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE | 916 #undef DECLARE_DESCRIPTOR_WITH_CUSTOM_FUNCTION_TYPE |
| 935 #undef DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG | 917 #undef DECLARE_DESCRIPTOR_WITH_BASE_AND_FUNCTION_TYPE_ARG |
| 918 #undef DEFINE_PARAMETERS |
| 936 | 919 |
| 937 // We define the association between CallDescriptors::Key and the specialized | 920 // We define the association between CallDescriptors::Key and the specialized |
| 938 // descriptor here to reduce boilerplate and mistakes. | 921 // descriptor here to reduce boilerplate and mistakes. |
| 939 #define DEF_KEY(name) \ | 922 #define DEF_KEY(name) \ |
| 940 CallDescriptors::Key name##Descriptor::key() { return CallDescriptors::name; } | 923 CallDescriptors::Key name##Descriptor::key() { return CallDescriptors::name; } |
| 941 INTERFACE_DESCRIPTOR_LIST(DEF_KEY) | 924 INTERFACE_DESCRIPTOR_LIST(DEF_KEY) |
| 942 #undef DEF_KEY | 925 #undef DEF_KEY |
| 943 } // namespace internal | 926 } // namespace internal |
| 944 } // namespace v8 | 927 } // namespace v8 |
| 945 | 928 |
| 946 | 929 |
| 947 #if V8_TARGET_ARCH_ARM64 | 930 #if V8_TARGET_ARCH_ARM64 |
| 948 #include "src/arm64/interface-descriptors-arm64.h" | 931 #include "src/arm64/interface-descriptors-arm64.h" |
| 949 #elif V8_TARGET_ARCH_ARM | 932 #elif V8_TARGET_ARCH_ARM |
| 950 #include "src/arm/interface-descriptors-arm.h" | 933 #include "src/arm/interface-descriptors-arm.h" |
| 951 #endif | 934 #endif |
| 952 | 935 |
| 953 #endif // V8_CALL_INTERFACE_DESCRIPTOR_H_ | 936 #endif // V8_CALL_INTERFACE_DESCRIPTOR_H_ |
| OLD | NEW |