| Index: src/mips64/builtins-mips64.cc | 
| diff --git a/src/mips64/builtins-mips64.cc b/src/mips64/builtins-mips64.cc | 
| index 655d5904d043c6b7f6ad598e6988fdd700151135..95bef0816decd874aceec5e3606abd0464cfd616 100644 | 
| --- a/src/mips64/builtins-mips64.cc | 
| +++ b/src/mips64/builtins-mips64.cc | 
| @@ -1661,6 +1661,35 @@ void Builtins::Generate_Call(MacroAssembler* masm) { | 
| } | 
|  | 
|  | 
| +// static | 
| +void Builtins::Generate_PushArgsAndCall(MacroAssembler* masm) { | 
| +  // ----------- S t a t e ------------- | 
| +  //  -- a0 : the number of arguments (not including the receiver) | 
| +  //  -- a2 : the address of the first argument to be pushed. Subsequent | 
| +  //          arguments should be consecutive above this, in the same order as | 
| +  //          they are to be pushed onto the stack. | 
| +  //  -- a1 : the target to call (can be any Object). | 
| + | 
| +  // Find the address of the last argument. | 
| +  __ Daddu(a3, a0, Operand(1));  // Add one for receiver. | 
| +  __ dsll(a3, a3, kPointerSizeLog2); | 
| +  __ Dsubu(a3, a2, Operand(a3)); | 
| + | 
| +  // Push the arguments. | 
| +  Label loop_header, loop_check; | 
| +  __ Branch(&loop_check); | 
| +  __ bind(&loop_header); | 
| +  __ ld(a4, MemOperand(a2)); | 
| +  __ Daddu(a2, a2, Operand(-kPointerSize)); | 
| +  __ push(a4); | 
| +  __ bind(&loop_check); | 
| +  __ Branch(&loop_header, gt, a2, Operand(a3)); | 
| + | 
| +  // Call the target. | 
| +  __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); | 
| +} | 
| + | 
| + | 
| void Builtins::Generate_ArgumentsAdaptorTrampoline(MacroAssembler* masm) { | 
| // State setup as expected by MacroAssembler::InvokePrologue. | 
| // ----------- S t a t e ------------- | 
|  |