| 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 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 519 Node* target, Node** args, size_t result_size) { | 519 Node* target, Node** args, size_t result_size) { |
| 520 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( | 520 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( |
| 521 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), | 521 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), |
| 522 CallDescriptor::kNoFlags, Operator::kNoProperties, | 522 CallDescriptor::kNoFlags, Operator::kNoProperties, |
| 523 MachineType::AnyTagged(), result_size); | 523 MachineType::AnyTagged(), result_size); |
| 524 | 524 |
| 525 return CallN(call_descriptor, target, args); | 525 return CallN(call_descriptor, target, args); |
| 526 } | 526 } |
| 527 | 527 |
| 528 Node* CodeAssembler::TailCallStub(Callable const& callable, Node* context, | 528 Node* CodeAssembler::TailCallStub(Callable const& callable, Node* context, |
| 529 Node* arg1, size_t result_size) { |
| 530 Node* target = HeapConstant(callable.code()); |
| 531 return TailCallStub(callable.descriptor(), target, context, arg1, |
| 532 result_size); |
| 533 } |
| 534 |
| 535 Node* CodeAssembler::TailCallStub(Callable const& callable, Node* context, |
| 529 Node* arg1, Node* arg2, size_t result_size) { | 536 Node* arg1, Node* arg2, size_t result_size) { |
| 530 Node* target = HeapConstant(callable.code()); | 537 Node* target = HeapConstant(callable.code()); |
| 531 return TailCallStub(callable.descriptor(), target, context, arg1, arg2, | 538 return TailCallStub(callable.descriptor(), target, context, arg1, arg2, |
| 532 result_size); | 539 result_size); |
| 533 } | 540 } |
| 534 | 541 |
| 535 Node* CodeAssembler::TailCallStub(Callable const& callable, Node* context, | 542 Node* CodeAssembler::TailCallStub(Callable const& callable, Node* context, |
| 536 Node* arg1, Node* arg2, Node* arg3, | 543 Node* arg1, Node* arg2, Node* arg3, |
| 537 size_t result_size) { | 544 size_t result_size) { |
| 538 Node* target = HeapConstant(callable.code()); | 545 Node* target = HeapConstant(callable.code()); |
| 539 return TailCallStub(callable.descriptor(), target, context, arg1, arg2, arg3, | 546 return TailCallStub(callable.descriptor(), target, context, arg1, arg2, arg3, |
| 540 result_size); | 547 result_size); |
| 541 } | 548 } |
| 542 | 549 |
| 543 Node* CodeAssembler::TailCallStub(const CallInterfaceDescriptor& descriptor, | 550 Node* CodeAssembler::TailCallStub(const CallInterfaceDescriptor& descriptor, |
| 544 Node* target, Node* context, Node* arg1, | 551 Node* target, Node* context, Node* arg1, |
| 552 size_t result_size) { |
| 553 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( |
| 554 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), |
| 555 CallDescriptor::kSupportsTailCalls, Operator::kNoProperties, |
| 556 MachineType::AnyTagged(), result_size); |
| 557 |
| 558 Node** args = zone()->NewArray<Node*>(2); |
| 559 args[0] = arg1; |
| 560 args[1] = context; |
| 561 |
| 562 return raw_assembler_->TailCallN(call_descriptor, target, args); |
| 563 } |
| 564 |
| 565 Node* CodeAssembler::TailCallStub(const CallInterfaceDescriptor& descriptor, |
| 566 Node* target, Node* context, Node* arg1, |
| 545 Node* arg2, size_t result_size) { | 567 Node* arg2, size_t result_size) { |
| 546 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( | 568 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( |
| 547 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), | 569 isolate(), zone(), descriptor, descriptor.GetStackParameterCount(), |
| 548 CallDescriptor::kSupportsTailCalls, Operator::kNoProperties, | 570 CallDescriptor::kSupportsTailCalls, Operator::kNoProperties, |
| 549 MachineType::AnyTagged(), result_size); | 571 MachineType::AnyTagged(), result_size); |
| 550 | 572 |
| 551 Node** args = zone()->NewArray<Node*>(3); | 573 Node** args = zone()->NewArray<Node*>(3); |
| 552 args[0] = arg1; | 574 args[0] = arg1; |
| 553 args[1] = arg2; | 575 args[1] = arg2; |
| 554 args[2] = context; | 576 args[2] = context; |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 876 } | 898 } |
| 877 } | 899 } |
| 878 } | 900 } |
| 879 | 901 |
| 880 bound_ = true; | 902 bound_ = true; |
| 881 } | 903 } |
| 882 | 904 |
| 883 } // namespace compiler | 905 } // namespace compiler |
| 884 } // namespace internal | 906 } // namespace internal |
| 885 } // namespace v8 | 907 } // namespace v8 |
| OLD | NEW |