| Index: src/builtins/mips64/builtins-mips64.cc | 
| diff --git a/src/builtins/mips64/builtins-mips64.cc b/src/builtins/mips64/builtins-mips64.cc | 
| index 194e3532b75e788d4b329e6d0ab8ec0c2265f462..a5c71dfa01a210d63339ab0127e6ed01eb488b12 100644 | 
| --- a/src/builtins/mips64/builtins-mips64.cc | 
| +++ b/src/builtins/mips64/builtins-mips64.cc | 
| @@ -139,7 +139,7 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) { | 
| __ LoadRoot(t1, root_index); | 
| __ ldc1(f0, FieldMemOperand(t1, HeapNumber::kValueOffset)); | 
|  | 
| -  Label done_loop, loop; | 
| +  Label done_loop, loop, done; | 
| __ mov(a3, a0); | 
| __ bind(&loop); | 
| { | 
| @@ -195,15 +195,25 @@ void Builtins::Generate_MathMaxMin(MacroAssembler* masm, MathMaxMinKind kind) { | 
| // accumulator value on the left hand side (f0) and the next parameter value | 
| // on the right hand side (f2). | 
| // We need to work out which HeapNumber (or smi) the result came from. | 
| -    Label compare_nan; | 
| +    Label compare_nan, ool_min, ool_max; | 
| __ BranchF(nullptr, &compare_nan, eq, f0, f2); | 
| __ Move(a4, f0); | 
| if (kind == MathMaxMinKind::kMin) { | 
| -      __ MinNaNCheck_d(f0, f0, f2); | 
| +      __ Float64Min(f0, f0, f2, &ool_min); | 
| } else { | 
| DCHECK(kind == MathMaxMinKind::kMax); | 
| -      __ MaxNaNCheck_d(f0, f0, f2); | 
| +      __ Float64Max(f0, f0, f2, &ool_max); | 
| } | 
| +    __ jmp(&done); | 
| + | 
| +    __ bind(&ool_min); | 
| +    __ Float64MinOutOfLine(f0, f0, f2); | 
| +    __ jmp(&done); | 
| + | 
| +    __ bind(&ool_max); | 
| +    __ Float64MaxOutOfLine(f0, f0, f2); | 
| + | 
| +    __ bind(&done); | 
| __ Move(at, f0); | 
| __ Branch(&loop, eq, a4, Operand(at)); | 
| __ mov(t1, a2); | 
|  |