Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(158)

Side by Side Diff: vm/assembler_x64.cc

Issue 11519006: Add read only handles for the following predefined symbols (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/assembler_ia32.cc ('k') | vm/ast.h » ('j') | vm/ast.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 1634 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 return; 1645 return;
1646 } 1646 }
1647 addq(RSP, Immediate(stack_elements * kWordSize)); 1647 addq(RSP, Immediate(stack_elements * kWordSize));
1648 } 1648 }
1649 1649
1650 1650
1651 void Assembler::LoadObject(Register dst, const Object& object) { 1651 void Assembler::LoadObject(Register dst, const Object& object) {
1652 if (object.IsSmi() || object.IsNull()) { 1652 if (object.IsSmi() || object.IsNull()) {
1653 movq(dst, Immediate(reinterpret_cast<int64_t>(object.raw()))); 1653 movq(dst, Immediate(reinterpret_cast<int64_t>(object.raw())));
1654 } else { 1654 } else {
1655 ASSERT(object.IsZoneHandle()); 1655 ASSERT(object.IsPredefinedHandle() || object.IsZoneHandle());
1656 ASSERT(object.IsOld()); 1656 ASSERT(object.IsOld());
1657 AssemblerBuffer::EnsureCapacity ensured(&buffer_); 1657 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
1658 EmitRegisterREX(dst, REX_W); 1658 EmitRegisterREX(dst, REX_W);
1659 EmitUint8(0xB8 | (dst & 7)); 1659 EmitUint8(0xB8 | (dst & 7));
1660 buffer_.EmitObject(object); 1660 buffer_.EmitObject(object);
1661 } 1661 }
1662 } 1662 }
1663 1663
1664 1664
1665 void Assembler::StoreObject(const Address& dst, const Object& object) { 1665 void Assembler::StoreObject(const Address& dst, const Object& object) {
1666 if (object.IsSmi() || object.IsNull()) { 1666 if (object.IsSmi() || object.IsNull()) {
1667 movq(dst, Immediate(reinterpret_cast<int64_t>(object.raw()))); 1667 movq(dst, Immediate(reinterpret_cast<int64_t>(object.raw())));
1668 } else { 1668 } else {
1669 ASSERT(object.IsZoneHandle()); 1669 ASSERT(object.IsPredefinedHandle() || object.IsZoneHandle());
1670 ASSERT(object.IsOld()); 1670 ASSERT(object.IsOld());
1671 LoadObject(TMP, object); 1671 LoadObject(TMP, object);
1672 movq(dst, TMP); 1672 movq(dst, TMP);
1673 } 1673 }
1674 } 1674 }
1675 1675
1676 1676
1677 void Assembler::PushObject(const Object& object) { 1677 void Assembler::PushObject(const Object& object) {
1678 if (object.IsSmi() || object.IsNull()) { 1678 if (object.IsSmi() || object.IsNull()) {
1679 pushq(Immediate(reinterpret_cast<int64_t>(object.raw()))); 1679 pushq(Immediate(reinterpret_cast<int64_t>(object.raw())));
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
2110 2110
2111 const char* Assembler::XmmRegisterName(XmmRegister reg) { 2111 const char* Assembler::XmmRegisterName(XmmRegister reg) {
2112 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); 2112 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters));
2113 return xmm_reg_names[reg]; 2113 return xmm_reg_names[reg];
2114 } 2114 }
2115 2115
2116 2116
2117 } // namespace dart 2117 } // namespace dart
2118 2118
2119 #endif // defined TARGET_ARCH_X64 2119 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « vm/assembler_ia32.cc ('k') | vm/ast.h » ('j') | vm/ast.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698