| 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);
|
|
|