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

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

Issue 2176803003: Add new atomic operations and use them in two places. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months 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
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/os_thread.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) 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/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/become.h" 10 #include "vm/become.h"
(...skipping 7099 matching lines...) Expand 10 before | Expand all | Expand 10 after
7110 ic_data = ICData::Clone(ic_data); 7110 ic_data = ICData::Clone(ic_data);
7111 ic_data.SetOriginal(original_ic_data); 7111 ic_data.SetOriginal(original_ic_data);
7112 } 7112 }
7113 (*deopt_id_to_ic_data)[ic_data.deopt_id()] = &ic_data; 7113 (*deopt_id_to_ic_data)[ic_data.deopt_id()] = &ic_data;
7114 } 7114 }
7115 } 7115 }
7116 } 7116 }
7117 7117
7118 7118
7119 void Function::set_ic_data_array(const Array& value) const { 7119 void Function::set_ic_data_array(const Array& value) const {
7120 StorePointer(&raw_ptr()->ic_data_array_, value.raw()); 7120 AtomicStorePointer(&raw_ptr()->ic_data_array_, value.raw());
7121 } 7121 }
7122 7122
7123 7123
7124 RawArray* Function::ic_data_array() const { 7124 RawArray* Function::ic_data_array() const {
7125 return raw_ptr()->ic_data_array_; 7125 return raw_ptr()->ic_data_array_;
7126 } 7126 }
7127 7127
7128 7128
7129 void Function::ClearICDataArray() const { 7129 void Function::ClearICDataArray() const {
7130 set_ic_data_array(Array::null_array()); 7130 set_ic_data_array(Array::null_array());
(...skipping 6320 matching lines...) Expand 10 before | Expand all | Expand 10 after
13451 const Array& data = Array::Handle(ic_data()); 13451 const Array& data = Array::Handle(ic_data());
13452 return data.IsImmutable(); 13452 return data.IsImmutable();
13453 } 13453 }
13454 13454
13455 13455
13456 void ICData::ResetData() const { 13456 void ICData::ResetData() const {
13457 // Number of array elements in one test entry. 13457 // Number of array elements in one test entry.
13458 intptr_t len = TestEntryLength(); 13458 intptr_t len = TestEntryLength();
13459 // IC data array must be null terminated (sentinel entry). 13459 // IC data array must be null terminated (sentinel entry).
13460 const Array& ic_data = Array::Handle(Array::New(len, Heap::kOld)); 13460 const Array& ic_data = Array::Handle(Array::New(len, Heap::kOld));
13461 WriteSentinel(ic_data, len);
13461 set_ic_data_array(ic_data); 13462 set_ic_data_array(ic_data);
13462 WriteSentinel(ic_data, len);
13463 } 13463 }
13464 13464
13465 13465
13466 RawICData* ICData::New() { 13466 RawICData* ICData::New() {
13467 ICData& result = ICData::Handle(); 13467 ICData& result = ICData::Handle();
13468 { 13468 {
13469 // IC data objects are long living objects, allocate them in old generation. 13469 // IC data objects are long living objects, allocate them in old generation.
13470 RawObject* raw = Object::Allocate(ICData::kClassId, 13470 RawObject* raw = Object::Allocate(ICData::kClassId,
13471 ICData::InstanceSize(), 13471 ICData::InstanceSize(),
13472 Heap::kOld); 13472 Heap::kOld);
(...skipping 9133 matching lines...) Expand 10 before | Expand all | Expand 10 after
22606 return UserTag::null(); 22606 return UserTag::null();
22607 } 22607 }
22608 22608
22609 22609
22610 const char* UserTag::ToCString() const { 22610 const char* UserTag::ToCString() const {
22611 const String& tag_label = String::Handle(label()); 22611 const String& tag_label = String::Handle(label());
22612 return tag_label.ToCString(); 22612 return tag_label.ToCString();
22613 } 22613 }
22614 22614
22615 } // namespace dart 22615 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/os_thread.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698