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); |
} |