Chromium Code Reviews| Index: src/assembler-ia32.cc |
| =================================================================== |
| --- src/assembler-ia32.cc (revision 1019) |
| +++ src/assembler-ia32.cc (working copy) |
| @@ -743,6 +743,21 @@ |
| } |
| +void Assembler::xchg(Register dst, Register src) { |
| + EnsureSpace ensure_space(this); |
| + last_pc_ = pc_; |
| + if (src.is(eax) || dst.is(eax)) { // Single-byte encoding |
| + if (dst.is(eax)) { |
| + dst = src; // No need to copy eax to src, we assume src is eax. |
|
Kevin Millikin (Chromium)
2008/12/29 09:05:38
More straightforward:
EMIT(0x90 | (dst.is(eax) ? s
William Hesse
2008/12/29 11:47:42
Done.
|
| + } |
| + EMIT(0x90 | dst.code()); |
| + } else { |
| + EMIT(0x87); |
| + EMIT(0xC0 | src.code() << 3 | dst.code()); |
| + } |
| +} |
| + |
| + |
| void Assembler::adc(Register dst, int32_t imm32) { |
| EnsureSpace ensure_space(this); |
| last_pc_ = pc_; |