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

Side by Side Diff: runtime/vm/assembler_x64.cc

Issue 716403003: Concurrent sweep on x64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 1 month 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 | « runtime/vm/assembler_x64.h ('k') | runtime/vm/pages.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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/cpu.h" 9 #include "vm/cpu.h"
10 #include "vm/heap.h" 10 #include "vm/heap.h"
(...skipping 2866 matching lines...) Expand 10 before | Expand all | Expand 10 after
2877 bool can_value_be_smi) { 2877 bool can_value_be_smi) {
2878 ASSERT(object != value); 2878 ASSERT(object != value);
2879 movq(dest, value); 2879 movq(dest, value);
2880 Label done; 2880 Label done;
2881 if (can_value_be_smi) { 2881 if (can_value_be_smi) {
2882 StoreIntoObjectFilter(object, value, &done); 2882 StoreIntoObjectFilter(object, value, &done);
2883 } else { 2883 } else {
2884 StoreIntoObjectFilterNoSmi(object, value, &done); 2884 StoreIntoObjectFilterNoSmi(object, value, &done);
2885 } 2885 }
2886 // A store buffer update is required. 2886 // A store buffer update is required.
2887 if (value != RAX) pushq(RAX); 2887 if (value != RDX) pushq(RDX);
2888 if (object != RAX) { 2888 if (object != RDX) {
2889 movq(RAX, object); 2889 movq(RDX, object);
2890 } 2890 }
2891 StubCode* stub_code = Isolate::Current()->stub_code(); 2891 StubCode* stub_code = Isolate::Current()->stub_code();
2892 Call(&stub_code->UpdateStoreBufferLabel(), PP); 2892 Call(&stub_code->UpdateStoreBufferLabel(), PP);
2893 if (value != RAX) popq(RAX); 2893 if (value != RDX) popq(RDX);
2894 Bind(&done); 2894 Bind(&done);
2895 } 2895 }
2896 2896
2897 2897
2898 void Assembler::StoreIntoObjectNoBarrier(Register object, 2898 void Assembler::StoreIntoObjectNoBarrier(Register object,
2899 const Address& dest, 2899 const Address& dest,
2900 Register value) { 2900 Register value) {
2901 movq(dest, value); 2901 movq(dest, value);
2902 #if defined(DEBUG) 2902 #if defined(DEBUG)
2903 Label done; 2903 Label done;
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after
3663 3663
3664 3664
3665 const char* Assembler::FpuRegisterName(FpuRegister reg) { 3665 const char* Assembler::FpuRegisterName(FpuRegister reg) {
3666 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); 3666 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters));
3667 return xmm_reg_names[reg]; 3667 return xmm_reg_names[reg];
3668 } 3668 }
3669 3669
3670 } // namespace dart 3670 } // namespace dart
3671 3671
3672 #endif // defined TARGET_ARCH_X64 3672 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « runtime/vm/assembler_x64.h ('k') | runtime/vm/pages.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698