| Index: src/ia32/lithium-gap-resolver-ia32.cc
 | 
| ===================================================================
 | 
| --- src/ia32/lithium-gap-resolver-ia32.cc	(revision 7649)
 | 
| +++ src/ia32/lithium-gap-resolver-ia32.cc	(working copy)
 | 
| @@ -309,12 +309,15 @@
 | 
|      __ mov(dst, src);
 | 
|  
 | 
|    } else if (source->IsDoubleRegister()) {
 | 
| -    ASSERT(destination->IsDoubleRegister() ||
 | 
| -           destination->IsDoubleStackSlot());
 | 
|      XMMRegister src = cgen_->ToDoubleRegister(source);
 | 
| -    Operand dst = cgen_->ToOperand(destination);
 | 
| -    __ movdbl(dst, src);
 | 
| -
 | 
| +    if (destination->IsDoubleRegister()) {
 | 
| +      XMMRegister dst = cgen_->ToDoubleRegister(destination);
 | 
| +      __ movaps(dst, src);
 | 
| +    } else {
 | 
| +      ASSERT(destination->IsDoubleStackSlot());
 | 
| +      Operand dst = cgen_->ToOperand(destination);
 | 
| +      __ movdbl(dst, src);
 | 
| +    }
 | 
|    } else if (source->IsDoubleStackSlot()) {
 | 
|      ASSERT(destination->IsDoubleRegister() ||
 | 
|             destination->IsDoubleStackSlot());
 | 
| @@ -391,13 +394,19 @@
 | 
|        __ mov(dst, tmp1);
 | 
|        __ mov(src, tmp0);
 | 
|      }
 | 
| +  } else if (source->IsDoubleRegister() && destination->IsDoubleRegister()) {
 | 
| +    // XMM register-register swap. We rely on having xmm0
 | 
| +    // available as a fixed scratch register.
 | 
| +    XMMRegister src = cgen_->ToDoubleRegister(source);
 | 
| +    XMMRegister dst = cgen_->ToDoubleRegister(destination);
 | 
| +    __ movaps(xmm0, src);
 | 
| +    __ movaps(src, dst);
 | 
| +    __ movaps(dst, xmm0);
 | 
|  
 | 
|    } else if (source->IsDoubleRegister() || destination->IsDoubleRegister()) {
 | 
| -    // XMM register-register or register-memory.  We rely on having xmm0
 | 
| +    // XMM register-memory swap.  We rely on having xmm0
 | 
|      // available as a fixed scratch register.
 | 
| -    ASSERT(source->IsDoubleRegister() || source->IsDoubleStackSlot());
 | 
| -    ASSERT(destination->IsDoubleRegister() ||
 | 
| -           destination->IsDoubleStackSlot());
 | 
| +    ASSERT(source->IsDoubleStackSlot() || destination->IsDoubleStackSlot());
 | 
|      XMMRegister reg = cgen_->ToDoubleRegister(source->IsDoubleRegister()
 | 
|                                                    ? source
 | 
|                                                    : destination);
 | 
| 
 |