| Index: src/ia32/codegen-ia32.cc
 | 
| ===================================================================
 | 
| --- src/ia32/codegen-ia32.cc	(revision 4872)
 | 
| +++ src/ia32/codegen-ia32.cc	(working copy)
 | 
| @@ -604,6 +604,10 @@
 | 
|      RegisterFile empty_regs;
 | 
|      SetFrame(clone, &empty_regs);
 | 
|      __ bind(&allocation_failed);
 | 
| +    if (!CpuFeatures::IsSupported(SSE2)) {
 | 
| +      // Pop the value from the floating point stack.
 | 
| +      __ fstp(0);
 | 
| +    }
 | 
|      unsafe_bailout_->Jump();
 | 
|  
 | 
|      done.Bind(value);
 | 
| @@ -2991,7 +2995,7 @@
 | 
|                                ¬_numbers);
 | 
|      LoadComparisonOperandSSE2(masm_, right_side, xmm1, left_side, right_side,
 | 
|                                ¬_numbers);
 | 
| -    __ comisd(xmm0, xmm1);
 | 
| +    __ ucomisd(xmm0, xmm1);
 | 
|    } else {
 | 
|      Label check_right, compare;
 | 
|  
 | 
| @@ -7306,7 +7310,7 @@
 | 
|      // Since xmm3 is 1 and xmm2 is -0.5 this is simply xmm2 + xmm3.
 | 
|      __ addsd(xmm2, xmm3);
 | 
|      // xmm2 now has 0.5.
 | 
| -    __ comisd(xmm2, xmm1);
 | 
| +    __ ucomisd(xmm2, xmm1);
 | 
|      call_runtime.Branch(not_equal);
 | 
|      // Calculates square root.
 | 
|      __ movsd(xmm1, xmm0);
 | 
| @@ -11592,7 +11596,7 @@
 | 
|        CpuFeatures::Scope fscope(SSE2);
 | 
|        __ movdbl(xmm0, FieldOperand(object, HeapNumber::kValueOffset));
 | 
|        __ movdbl(xmm1, FieldOperand(probe, HeapNumber::kValueOffset));
 | 
| -      __ comisd(xmm0, xmm1);
 | 
| +      __ ucomisd(xmm0, xmm1);
 | 
|      } else {
 | 
|        __ fld_d(FieldOperand(object, HeapNumber::kValueOffset));
 | 
|        __ fld_d(FieldOperand(probe, HeapNumber::kValueOffset));
 | 
| @@ -11817,7 +11821,7 @@
 | 
|        CpuFeatures::Scope use_cmov(CMOV);
 | 
|  
 | 
|        FloatingPointHelper::LoadSSE2Operands(masm, &non_number_comparison);
 | 
| -      __ comisd(xmm0, xmm1);
 | 
| +      __ ucomisd(xmm0, xmm1);
 | 
|  
 | 
|        // Don't base result on EFLAGS when a NaN is involved.
 | 
|        __ j(parity_even, &unordered, not_taken);
 | 
| 
 |