| 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 |