Index: src/compiler/raw-machine-assembler.cc |
diff --git a/src/compiler/raw-machine-assembler.cc b/src/compiler/raw-machine-assembler.cc |
index 0508d01af9ff2e311763960252d34e37f5c9a1f3..0e57bfcef87c3a26d75b6235679f56c1d8a46b2c 100644 |
--- a/src/compiler/raw-machine-assembler.cc |
+++ b/src/compiler/raw-machine-assembler.cc |
@@ -372,6 +372,29 @@ Node* RawMachineAssembler::TailCallRuntime4(Runtime::FunctionId function, |
return tail_call; |
} |
+Node* RawMachineAssembler::TailCallRuntime5(Runtime::FunctionId function, |
+ Node* arg1, Node* arg2, Node* arg3, |
+ Node* arg4, Node* arg5, |
+ Node* context) { |
+ const int kArity = 5; |
+ CallDescriptor* desc = Linkage::GetRuntimeCallDescriptor( |
+ zone(), function, kArity, Operator::kNoProperties, |
+ CallDescriptor::kSupportsTailCalls); |
+ int return_count = static_cast<int>(desc->ReturnCount()); |
+ |
+ Node* centry = HeapConstant(CEntryStub(isolate(), return_count).GetCode()); |
+ Node* ref = AddNode( |
+ common()->ExternalConstant(ExternalReference(function, isolate()))); |
+ Node* arity = Int32Constant(kArity); |
+ |
+ Node* nodes[] = {centry, arg1, arg2, arg3, arg4, arg5, ref, arity, context}; |
+ Node* tail_call = MakeNode(common()->TailCall(desc), arraysize(nodes), nodes); |
+ |
+ schedule()->AddTailCall(CurrentBlock(), tail_call); |
+ current_block_ = nullptr; |
+ return tail_call; |
+} |
+ |
Node* RawMachineAssembler::CallCFunction0(MachineType return_type, |
Node* function) { |
MachineSignature::Builder builder(zone(), 1, 0); |