OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |