Index: src/mips/code-stubs-mips.cc |
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc |
index 78c24cf9b6aa2ce4de8f1fbbfaf496657240b8c6..bdb382369cde18798ce8f5317cf80701c70378a7 100644 |
--- a/src/mips/code-stubs-mips.cc |
+++ b/src/mips/code-stubs-mips.cc |
@@ -3859,8 +3859,20 @@ void CompareICStub::GenerateKnownObjects(MacroAssembler* masm) { |
__ Branch(&miss, ne, a2, Operand(t0)); |
__ Branch(&miss, ne, a3, Operand(t0)); |
- __ Ret(USE_DELAY_SLOT); |
- __ subu(v0, a0, a1); |
+ if (Token::IsEqualityOp(op())) { |
+ __ Ret(USE_DELAY_SLOT); |
+ __ subu(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); |