Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 96d45d319eeb8c4e13870e3b7ee636a9a67648a8..65a49349360f96963e6fab8197dbf565febc59e9 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -1793,9 +1793,10 @@ void BinaryOpStub::GenerateInt32Stub(MacroAssembler* masm) { |
if (result_type_ <= BinaryOpIC::INT32) { |
__ cvttsd2si(ecx, Operand(xmm0)); |
__ cvtsi2sd(xmm2, ecx); |
- __ ucomisd(xmm0, xmm2); |
- __ j(not_zero, ¬_int32); |
- __ j(carry, ¬_int32); |
+ __ pcmpeqd(xmm2, xmm0); |
+ __ movmskpd(ecx, xmm2); |
+ __ test(ecx, Immediate(1)); |
+ __ j(zero, ¬_int32); |
} |
GenerateHeapResultAllocation(masm, &call_runtime); |
__ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm0); |