| Index: src/mips64/code-stubs-mips64.cc
|
| diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc
|
| index 8a71aacb0ba0c94a57b68d10a449a4a2a1e3ee2a..a425fff45c31b342d4ed04256e0d36f461a0258a 100644
|
| --- a/src/mips64/code-stubs-mips64.cc
|
| +++ b/src/mips64/code-stubs-mips64.cc
|
| @@ -715,13 +715,21 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
| // Never falls through to here.
|
|
|
| __ bind(&slow);
|
| - // Prepare for call to builtin. Push object pointers, a0 (lhs) first,
|
| - // a1 (rhs) second.
|
| - __ Push(lhs, rhs);
|
| - // Figure out which native to call and setup the arguments.
|
| if (cc == eq) {
|
| - __ TailCallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals);
|
| + {
|
| + FrameScope scope(masm, StackFrame::INTERNAL);
|
| + __ Push(lhs, rhs);
|
| + __ CallRuntime(strict() ? Runtime::kStrictEquals : Runtime::kEquals);
|
| + }
|
| + // Turn true into 0 and false into some non-zero value.
|
| + STATIC_ASSERT(EQUAL == 0);
|
| + __ LoadRoot(a0, Heap::kTrueValueRootIndex);
|
| + __ Ret(USE_DELAY_SLOT);
|
| + __ subu(v0, v0, a0); // In delay slot.
|
| } else {
|
| + // Prepare for call to builtin. Push object pointers, a0 (lhs) first,
|
| + // a1 (rhs) second.
|
| + __ Push(lhs, rhs);
|
| int ncr; // NaN compare result.
|
| if (cc == lt || cc == le) {
|
| ncr = GREATER;
|
|
|