Chromium Code Reviews| Index: runtime/vm/assembler_x64.cc |
| =================================================================== |
| --- runtime/vm/assembler_x64.cc (revision 1958) |
| +++ runtime/vm/assembler_x64.cc (working copy) |
| @@ -1124,35 +1124,24 @@ |
| void Assembler::LoadObject(Register dst, const Object& object) { |
| - UNIMPLEMENTED(); |
| ASSERT(object.IsZoneHandle()); |
| AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| - EmitUint8(0xB8 + dst); |
| + EmitRegisterREX(dst, REX_W); |
| + EmitUint8(0xB8 | (dst & 7)); |
| buffer_.EmitObject(object); |
| } |
| void Assembler::PushObject(const Object& object) { |
| - UNIMPLEMENTED(); |
| - ASSERT(object.IsZoneHandle()); |
| - AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| - EmitUint8(0x68); |
| - buffer_.EmitObject(object); |
| + LoadObject(R11, object); |
| + pushq(R11); |
|
srdjan
2011/12/01 01:26:07
Should we label R11 as scratch register?
regis
2011/12/01 01:42:04
Defined alias TMP as R11.
|
| } |
| void Assembler::CompareObject(Register reg, const Object& object) { |
| - UNIMPLEMENTED(); |
| - ASSERT(object.IsZoneHandle()); |
| - AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| - if (reg == RAX) { |
| - EmitUint8(0x05 + (7 << 3)); |
| - buffer_.EmitObject(object); |
| - } else { |
| - EmitUint8(0x81); |
| - EmitOperand(7, Operand(reg)); |
| - buffer_.EmitObject(object); |
| - } |
| + ASSERT(reg != R11); |
| + LoadObject(R11, object); |
| + cmpq(reg, R11); |
| } |