| Index: src/compiler/ia32/code-generator-ia32.cc | 
| diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc | 
| index f63bc22e4344fe65a875ea3c7cc341a98caa362a..16144c488c7d942b71964800d53e2e09c66b3ffa 100644 | 
| --- a/src/compiler/ia32/code-generator-ia32.cc | 
| +++ b/src/compiler/ia32/code-generator-ia32.cc | 
| @@ -1616,9 +1616,21 @@ void CodeGenerator::AssembleSwap(InstructionOperand* source, | 
| // Register-register. | 
| Register src = g.ToRegister(source); | 
| Register dst = g.ToRegister(destination); | 
| -    __ push(src); | 
| -    __ mov(src, dst); | 
| -    __ pop(dst); | 
| +    if (FLAG_use_xor) { | 
| +      __ xor_(src, dst); | 
| +      __ xor_(dst, src); | 
| +      __ xor_(src, dst); | 
| +    } else if (FLAG_use_xchg) { | 
| +      __ xchg(src, dst); | 
| +    } else if (FLAG_use_movs) { | 
| +      __ mov(esi, src); | 
| +      __ mov(src, dst); | 
| +      __ mov(dst, esi); | 
| +    } else { | 
| +      __ push(src); | 
| +      __ mov(src, dst); | 
| +      __ pop(dst); | 
| +    } | 
| } else if (source->IsRegister() && destination->IsStackSlot()) { | 
| // Register-memory. | 
| Register src = g.ToRegister(source); | 
|  |