Index: src/mips64/code-stubs-mips64.cc |
diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc |
index 1d996ccc0142dd1f19e8898c06d81ca4328c71ca..c2b6429636ed446aca87adcd4b82dbfe2d89dc30 100644 |
--- a/src/mips64/code-stubs-mips64.cc |
+++ b/src/mips64/code-stubs-mips64.cc |
@@ -3362,10 +3362,17 @@ void CompareICStub::GenerateStrings(MacroAssembler* masm) { |
// Handle more complex cases in runtime. |
__ bind(&runtime); |
- __ Push(left, right); |
if (equality) { |
- __ TailCallRuntime(Runtime::kStringEquals); |
+ { |
+ FrameScope scope(masm, StackFrame::INTERNAL); |
+ __ Push(left, right); |
+ __ CallRuntime(Runtime::kStringEqual); |
+ } |
+ __ LoadRoot(a0, Heap::kTrueValueRootIndex); |
+ __ Ret(USE_DELAY_SLOT); |
+ __ Subu(v0, v0, a0); // In delay slot. |
} else { |
+ __ Push(left, right); |
__ TailCallRuntime(Runtime::kStringCompare); |
} |