| Index: src/ia32/lithium-codegen-ia32.cc
 | 
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
 | 
| index 98a049b64abed3387a1d5f6c380a48c1fed8c78f..4818b3e234cfcc5125db88876effa10de3d49f9b 100644
 | 
| --- a/src/ia32/lithium-codegen-ia32.cc
 | 
| +++ b/src/ia32/lithium-codegen-ia32.cc
 | 
| @@ -416,6 +416,13 @@ bool LCodeGen::GenerateBody() {
 | 
|          x87_stack_.LeavingBlock(current_block_, LGoto::cast(instr));
 | 
|        } else if (FLAG_debug_code && FLAG_enable_slow_asserts &&
 | 
|                   !instr->IsGap() && !instr->IsReturn()) {
 | 
| +        if (instr->ClobbersDoubleRegisters()) {
 | 
| +          if (instr->HasDoubleRegisterResult()) {
 | 
| +            ASSERT_EQ(1, x87_stack_.depth());
 | 
| +          } else {
 | 
| +            ASSERT_EQ(0, x87_stack_.depth());
 | 
| +          }
 | 
| +        }
 | 
|          __ VerifyX87StackDepth(x87_stack_.depth());
 | 
|        }
 | 
|      }
 | 
| @@ -561,6 +568,16 @@ void LCodeGen::X87LoadForUsage(X87Register reg) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +void LCodeGen::X87LoadForUsage(X87Register reg1, X87Register reg2) {
 | 
| +  ASSERT(x87_stack_.Contains(reg1));
 | 
| +  ASSERT(x87_stack_.Contains(reg2));
 | 
| +  x87_stack_.Fxch(reg1, 1);
 | 
| +  x87_stack_.Fxch(reg2);
 | 
| +  x87_stack_.pop();
 | 
| +  x87_stack_.pop();
 | 
| +}
 | 
| +
 | 
| +
 | 
|  void LCodeGen::X87Stack::Fxch(X87Register reg, int other_slot) {
 | 
|    ASSERT(is_mutable_);
 | 
|    ASSERT(Contains(reg) && stack_depth_ > other_slot);
 | 
| @@ -2572,10 +2589,7 @@ void LCodeGen::DoCompareNumericAndBranch(LCompareNumericAndBranch* instr) {
 | 
|          CpuFeatureScope scope(masm(), SSE2);
 | 
|          __ ucomisd(ToDoubleRegister(left), ToDoubleRegister(right));
 | 
|        } else {
 | 
| -        X87Fxch(ToX87Register(right));
 | 
| -        X87Fxch(ToX87Register(left), 1);
 | 
| -        __ fld(0);
 | 
| -        __ fld(2);
 | 
| +        X87LoadForUsage(ToX87Register(right), ToX87Register(left));
 | 
|          __ FCmp();
 | 
|        }
 | 
|        // Don't base result on EFLAGS when a NaN is involved. Instead
 | 
| 
 |