| Index: src/compiler/raw-machine-assembler.cc
|
| diff --git a/src/compiler/raw-machine-assembler.cc b/src/compiler/raw-machine-assembler.cc
|
| index 623d5a2ed3bf84408c3d32db6184b4459bcb8c9e..f72380a318fbdb20eade8a8af6d544a240306b55 100644
|
| --- a/src/compiler/raw-machine-assembler.cc
|
| +++ b/src/compiler/raw-machine-assembler.cc
|
| @@ -162,6 +162,30 @@ Node* RawMachineAssembler::TailCallN(CallDescriptor* desc, Node* function,
|
| }
|
|
|
|
|
| +Node* RawMachineAssembler::CallVarArgs(CallDescriptor* desc, Node* function,
|
| + Node** fixed_args, Node* first_var_arg,
|
| + Node* last_var_arg) {
|
| + DCHECK(desc->HasVarArgs());
|
| + int fixed_param_count =
|
| + static_cast<int>(desc->GetMachineSignature()->parameter_count());
|
| + int input_count = fixed_param_count + 5;
|
| + Node** buffer = zone()->NewArray<Node*>(input_count);
|
| + int index = 0;
|
| + buffer[index++] = function;
|
| + for (int i = 0; i < fixed_param_count; i++) {
|
| + buffer[index++] = fixed_args[i];
|
| + }
|
| + buffer[index++] = first_var_arg;
|
| + buffer[index++] = last_var_arg;
|
| + buffer[index++] = graph()->start();
|
| + buffer[index++] = graph()->start();
|
| + Node* call =
|
| + graph()->NewNode(common()->CallVarArgs(desc), input_count, buffer);
|
| + schedule()->AddNode(CurrentBlock(), call);
|
| + return call;
|
| +}
|
| +
|
| +
|
| Node* RawMachineAssembler::CallFunctionStub0(Node* function, Node* receiver,
|
| Node* context, Node* frame_state,
|
| CallFunctionFlags flags) {
|
|
|