| Index: runtime/vm/intrinsifier_ia32.cc
|
| diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc
|
| index b9ea3a19f671a6678add2fa67f781d6402924614..f46e7d0e93819c95f3f13ac68a245b4c77d940c5 100644
|
| --- a/runtime/vm/intrinsifier_ia32.cc
|
| +++ b/runtime/vm/intrinsifier_ia32.cc
|
| @@ -736,11 +736,14 @@ void Intrinsifier::Integer_equalToInteger(Assembler* assembler) {
|
| __ testl(EAX, Immediate(kSmiTagMask));
|
| __ j(NOT_ZERO, &receiver_not_smi);
|
|
|
| - // Left (receiver) is Smi, return false if right is not Double.
|
| + // Left (receiver) is Smi, return false if right is not Double or Fraction.
|
| // Note that an instance of Mint or Bigint never contains a value that can be
|
| // represented by Smi.
|
| __ movl(EAX, Address(ESP, + 1 * kWordSize)); // Right argument.
|
| - __ CompareClassId(EAX, kDoubleCid, EDI);
|
| + __ LoadClassId(EDI, EAX);
|
| + __ cmpl(EDI, Immediate(kDoubleCid));
|
| + __ j(EQUAL, &fall_through);
|
| + __ cmpl(EDI, Immediate(kFractionCid));
|
| __ j(EQUAL, &fall_through);
|
| __ LoadObject(EAX, Bool::False()); // Smi == Mint -> false.
|
| __ ret();
|
|
|