OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/compiler/code-assembler.h" | 5 #include "src/compiler/code-assembler.h" |
6 | 6 |
7 #include <ostream> | 7 #include <ostream> |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/compiler/graph.h" | 10 #include "src/compiler/graph.h" |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 | 522 |
523 Node** args = zone()->NewArray<Node*>(4); | 523 Node** args = zone()->NewArray<Node*>(4); |
524 args[0] = arg1; | 524 args[0] = arg1; |
525 args[1] = arg2; | 525 args[1] = arg2; |
526 args[2] = arg3; | 526 args[2] = arg3; |
527 args[3] = context; | 527 args[3] = context; |
528 | 528 |
529 return raw_assembler_->TailCallN(call_descriptor, target, args); | 529 return raw_assembler_->TailCallN(call_descriptor, target, args); |
530 } | 530 } |
531 | 531 |
| 532 Node* CodeAssembler::TailCallStub(const CallInterfaceDescriptor& descriptor, |
| 533 Node* target, Node* context, Node* arg1, |
| 534 Node* arg2, Node* arg3, Node* arg4, |
| 535 size_t result_size) { |
| 536 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( |
| 537 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), |
| 538 CallDescriptor::kSupportsTailCalls, Operator::kNoProperties, |
| 539 MachineType::AnyTagged(), result_size); |
| 540 |
| 541 Node** args = zone()->NewArray<Node*>(5); |
| 542 args[0] = arg1; |
| 543 args[1] = arg2; |
| 544 args[2] = arg3; |
| 545 args[3] = arg4; |
| 546 args[4] = context; |
| 547 |
| 548 return raw_assembler_->TailCallN(call_descriptor, target, args); |
| 549 } |
| 550 |
532 Node* CodeAssembler::TailCallBytecodeDispatch( | 551 Node* CodeAssembler::TailCallBytecodeDispatch( |
533 const CallInterfaceDescriptor& interface_descriptor, | 552 const CallInterfaceDescriptor& interface_descriptor, |
534 Node* code_target_address, Node** args) { | 553 Node* code_target_address, Node** args) { |
535 CallDescriptor* descriptor = Linkage::GetBytecodeDispatchCallDescriptor( | 554 CallDescriptor* descriptor = Linkage::GetBytecodeDispatchCallDescriptor( |
536 isolate(), zone(), interface_descriptor, | 555 isolate(), zone(), interface_descriptor, |
537 interface_descriptor.GetStackParameterCount()); | 556 interface_descriptor.GetStackParameterCount()); |
538 return raw_assembler_->TailCallN(descriptor, code_target_address, args); | 557 return raw_assembler_->TailCallN(descriptor, code_target_address, args); |
539 } | 558 } |
540 | 559 |
541 void CodeAssembler::Goto(CodeAssembler::Label* label) { | 560 void CodeAssembler::Goto(CodeAssembler::Label* label) { |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
732 } | 751 } |
733 } | 752 } |
734 } | 753 } |
735 | 754 |
736 bound_ = true; | 755 bound_ = true; |
737 } | 756 } |
738 | 757 |
739 } // namespace compiler | 758 } // namespace compiler |
740 } // namespace internal | 759 } // namespace internal |
741 } // namespace v8 | 760 } // namespace v8 |
OLD | NEW |