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-stub-assembler.h" | 5 #include "src/compiler/code-stub-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 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 args[0] = arg1; | 595 args[0] = arg1; |
596 args[1] = arg2; | 596 args[1] = arg2; |
597 args[2] = arg3; | 597 args[2] = arg3; |
598 args[3] = arg4; | 598 args[3] = arg4; |
599 args[4] = arg5; | 599 args[4] = arg5; |
600 args[5] = context; | 600 args[5] = context; |
601 | 601 |
602 return CallN(call_descriptor, target, args); | 602 return CallN(call_descriptor, target, args); |
603 } | 603 } |
604 | 604 |
| 605 Node* CodeStubAssembler::TailCallStub(Callable const& callable, Node* context, |
| 606 Node* arg1, Node* arg2, |
| 607 size_t result_size) { |
| 608 Node* target = HeapConstant(callable.code()); |
| 609 return TailCallStub(callable.descriptor(), target, context, arg1, arg2, |
| 610 result_size); |
| 611 } |
| 612 |
605 Node* CodeStubAssembler::TailCallStub(const CallInterfaceDescriptor& descriptor, | 613 Node* CodeStubAssembler::TailCallStub(const CallInterfaceDescriptor& descriptor, |
606 Node* target, Node* context, Node* arg1, | 614 Node* target, Node* context, Node* arg1, |
607 Node* arg2, size_t result_size) { | 615 Node* arg2, size_t result_size) { |
608 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( | 616 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( |
609 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), | 617 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), |
610 CallDescriptor::kSupportsTailCalls, Operator::kNoProperties, | 618 CallDescriptor::kSupportsTailCalls, Operator::kNoProperties, |
611 MachineType::AnyTagged(), result_size); | 619 MachineType::AnyTagged(), result_size); |
612 | 620 |
613 Node** args = zone()->NewArray<Node*>(3); | 621 Node** args = zone()->NewArray<Node*>(3); |
614 args[0] = arg1; | 622 args[0] = arg1; |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 } | 827 } |
820 } | 828 } |
821 } | 829 } |
822 | 830 |
823 bound_ = true; | 831 bound_ = true; |
824 } | 832 } |
825 | 833 |
826 } // namespace compiler | 834 } // namespace compiler |
827 } // namespace internal | 835 } // namespace internal |
828 } // namespace v8 | 836 } // namespace v8 |
OLD | NEW |