| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/heap.h" | 9 #include "vm/heap.h" |
| 10 #include "vm/memory_region.h" | 10 #include "vm/memory_region.h" |
| (...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 | 821 |
| 822 | 822 |
| 823 void Assembler::addq(Register reg, const Immediate& imm) { | 823 void Assembler::addq(Register reg, const Immediate& imm) { |
| 824 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 824 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 825 EmitRegisterREX(reg, REX_W); | 825 EmitRegisterREX(reg, REX_W); |
| 826 EmitComplex(0, Operand(reg), imm); | 826 EmitComplex(0, Operand(reg), imm); |
| 827 } | 827 } |
| 828 | 828 |
| 829 | 829 |
| 830 void Assembler::addq(const Address& address, const Immediate& imm) { | 830 void Assembler::addq(const Address& address, const Immediate& imm) { |
| 831 UNIMPLEMENTED(); | 831 // TODO(srdjan): Implement shorter version for imm32. |
| 832 movq(TMP, imm); |
| 833 addq(address, TMP); |
| 834 } |
| 835 |
| 836 |
| 837 void Assembler::addq(const Address& address, Register reg) { |
| 838 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 839 EmitOperandREX(reg, address, REX_W); |
| 840 EmitUint8(0x01); |
| 841 EmitOperand(reg & 7, address); |
| 832 } | 842 } |
| 833 | 843 |
| 834 | 844 |
| 835 void Assembler::subl(Register dst, Register src) { | 845 void Assembler::subl(Register dst, Register src) { |
| 836 AssemblerBuffer::EnsureCapacity ensured(&buffer_); | 846 AssemblerBuffer::EnsureCapacity ensured(&buffer_); |
| 837 Operand operand(src); | 847 Operand operand(src); |
| 838 EmitOperandREX(dst, operand, REX_NONE); | 848 EmitOperandREX(dst, operand, REX_NONE); |
| 839 EmitUint8(0x2B); | 849 EmitUint8(0x2B); |
| 840 EmitOperand(dst & 7, operand); | 850 EmitOperand(dst & 7, operand); |
| 841 } | 851 } |
| (...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1553 comments.SetCommentAt(i, comments_[i]->comment()); | 1563 comments.SetCommentAt(i, comments_[i]->comment()); |
| 1554 } | 1564 } |
| 1555 | 1565 |
| 1556 return comments; | 1566 return comments; |
| 1557 } | 1567 } |
| 1558 | 1568 |
| 1559 | 1569 |
| 1560 } // namespace dart | 1570 } // namespace dart |
| 1561 | 1571 |
| 1562 #endif // defined TARGET_ARCH_X64 | 1572 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |