Index: src/mips64/code-stubs-mips64.cc |
diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc |
index 9df14e3878065dae3a14b08dbf06ca7e4f07f5c1..f139636ca3fa9e3f17961b76e4a6ff651850d8f7 100644 |
--- a/src/mips64/code-stubs-mips64.cc |
+++ b/src/mips64/code-stubs-mips64.cc |
@@ -3891,8 +3891,20 @@ void CompareICStub::GenerateKnownObjects(MacroAssembler* masm) { |
__ Branch(&miss, ne, a2, Operand(a4)); |
__ Branch(&miss, ne, a3, Operand(a4)); |
- __ Ret(USE_DELAY_SLOT); |
- __ dsubu(v0, a0, a1); |
+ if (Token::IsEqualityOp(op())) { |
+ __ Ret(USE_DELAY_SLOT); |
+ __ dsubu(v0, a0, a1); |
+ } else if (is_strong(strength())) { |
+ __ TailCallRuntime(Runtime::kThrowStrongModeImplicitConversion, 0, 1); |
+ } else { |
+ if (op() == Token::LT || op() == Token::LTE) { |
+ __ li(a2, Operand(Smi::FromInt(GREATER))); |
+ } else { |
+ __ li(a2, Operand(Smi::FromInt(LESS))); |
+ } |
+ __ Push(a1, a0, a2); |
+ __ TailCallRuntime(Runtime::kCompare, 3, 1); |
+ } |
__ bind(&miss); |
GenerateMiss(masm); |