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

Unified Diff: runtime/vm/object.cc

Issue 295863002: Write barrier audit, part 1 (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.cc
===================================================================
--- runtime/vm/object.cc (revision 40851)
+++ runtime/vm/object.cc (working copy)
@@ -677,7 +677,7 @@
Array::initializeHandle(
empty_array_,
reinterpret_cast<RawArray*>(address + kHeapObjectTag));
- empty_array_->raw_ptr()->length_ = Smi::New(0);
+ empty_array_->StoreSmi(&empty_array_->raw_ptr()->length_, Smi::New(0));
}
// Allocate and initialize the zero_array instance.
@@ -687,8 +687,9 @@
Array::initializeHandle(
zero_array_,
reinterpret_cast<RawArray*>(address + kHeapObjectTag));
- zero_array_->raw_ptr()->length_ = Smi::New(1);
- zero_array_->raw_ptr()->data()[0] = Smi::New(0);
+ zero_array_->StoreSmi(&zero_array_->raw_ptr()->length_, Smi::New(1));
+ zero_array_->StorePointer(&zero_array_->raw_ptr()->data()[0],
+ static_cast<RawObject*>(Smi::New(0)));
}
// Allocate and initialize the empty_descriptors instance.
@@ -701,7 +702,8 @@
PcDescriptors::initializeHandle(
empty_descriptors_,
reinterpret_cast<RawPcDescriptors*>(address + kHeapObjectTag));
- empty_descriptors_->raw_ptr()->length_ = 0;
+ empty_descriptors_->StoreNonPointer(&empty_descriptors_->raw_ptr()->length_,
+ 0);
}
// Allocate and initialize the canonical empty variable descriptor object.
@@ -1894,7 +1896,7 @@
if (!Utils::IsInt(16, value)) {
ReportTooManyTypeArguments(*this);
}
- raw_ptr()->num_type_arguments_ = value;
+ StoreNonPointer(&raw_ptr()->num_type_arguments_, value);
}
@@ -1902,7 +1904,7 @@
if (!Utils::IsInt(16, value)) {
ReportTooManyTypeArguments(*this);
}
- raw_ptr()->num_own_type_arguments_ = value;
+ StoreNonPointer(&raw_ptr()->num_own_type_arguments_, value);
}
@@ -2245,7 +2247,7 @@
void Class::set_state_bits(intptr_t bits) const {
- raw_ptr()->state_bits_ = static_cast<uint16_t>(bits);
+ StoreNonPointer(&raw_ptr()->state_bits_, static_cast<uint16_t>(bits));
}
@@ -3278,7 +3280,7 @@
void Class::set_token_pos(intptr_t token_pos) const {
ASSERT(token_pos >= 0);
- raw_ptr()->token_pos_ = token_pos;
+ StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -4190,7 +4192,7 @@
void UnresolvedClass::set_token_pos(intptr_t token_pos) const {
ASSERT(token_pos >= 0);
- raw_ptr()->token_pos_ = token_pos;
+ StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -4773,7 +4775,7 @@
ASSERT(!IsCanonical());
// This is only safe because we create a new Smi, which does not cause
// heap allocation.
- raw_ptr()->length_ = Smi::New(value);
+ StoreSmi(&raw_ptr()->length_, Smi::New(value));
}
@@ -5467,26 +5469,28 @@
void Function::set_token_pos(intptr_t value) const {
ASSERT(value >= 0);
- raw_ptr()->token_pos_ = value;
+ StoreNonPointer(&raw_ptr()->token_pos_, value);
}
void Function::set_kind_tag(intptr_t value) const {
- raw_ptr()->kind_tag_ = static_cast<uint32_t>(value);
+ StoreNonPointer(&raw_ptr()->kind_tag_, static_cast<uint32_t>(value));
}
void Function::set_num_fixed_parameters(intptr_t value) const {
ASSERT(value >= 0);
ASSERT(Utils::IsInt(16, value));
- raw_ptr()->num_fixed_parameters_ = static_cast<int16_t>(value);
+ StoreNonPointer(&raw_ptr()->num_fixed_parameters_,
+ static_cast<int16_t>(value));
}
void Function::set_num_optional_parameters(intptr_t value) const {
// A positive value indicates positional params, a negative one named params.
ASSERT(Utils::IsInt(16, value));
- raw_ptr()->num_optional_parameters_ = static_cast<int16_t>(value);
+ StoreNonPointer(&raw_ptr()->num_optional_parameters_,
+ static_cast<int16_t>(value));
}
@@ -7033,7 +7037,7 @@
void Field::set_guarded_list_length(intptr_t list_length) const {
- raw_ptr()->guarded_list_length_ = Smi::New(list_length);
+ StoreSmi(&raw_ptr()->guarded_list_length_, Smi::New(list_length));
}
@@ -8169,7 +8173,7 @@
void Script::set_kind(RawScript::Kind value) const {
- raw_ptr()->kind_ = value;
+ StoreNonPointer(&raw_ptr()->kind_, value);
}
@@ -8203,8 +8207,8 @@
intptr_t col_offset) const {
ASSERT(line_offset >= 0);
ASSERT(col_offset >= 0);
- raw_ptr()->line_offset_ = line_offset;
- raw_ptr()->col_offset_ = col_offset;
+ StoreNonPointer(&raw_ptr()->line_offset_, line_offset);
+ StoreNonPointer(&raw_ptr()->col_offset_, col_offset);
}
@@ -8579,7 +8583,7 @@
void Library::SetLoadInProgress() const {
// Must not already be in the process of being loaded.
ASSERT(raw_ptr()->load_state_ <= RawLibrary::kLoadRequested);
- raw_ptr()->load_state_ = RawLibrary::kLoadInProgress;
+ StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoadInProgress);
}
@@ -8593,14 +8597,14 @@
void Library::SetLoaded() const {
// Should not be already loaded or just allocated.
ASSERT(LoadInProgress() || LoadRequested());
- raw_ptr()->load_state_ = RawLibrary::kLoaded;
+ StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoaded);
}
void Library::SetLoadError(const Instance& error) const {
// Should not be already successfully loaded or just allocated.
ASSERT(LoadInProgress() || LoadRequested() || LoadFailed());
- raw_ptr()->load_state_ = RawLibrary::kLoadError;
+ StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoadError);
StorePointer(&raw_ptr()->load_error_, error.raw());
}
@@ -9328,7 +9332,7 @@
}
anon_array.SetAt(num_anonymous, cls);
num_anonymous++;
- raw_ptr()->num_anonymous_ = num_anonymous;
+ StoreNonPointer(&raw_ptr()->num_anonymous_, num_anonymous);
}
@@ -9434,7 +9438,7 @@
const Array& imports =
Array::Handle(Array::New(kInitialImportsCapacity, Heap::kOld));
StorePointer(&raw_ptr()->imports_, imports.raw());
- raw_ptr()->num_imports_ = 0;
+ StoreNonPointer(&raw_ptr()->num_imports_, 0);
}
@@ -9452,23 +9456,27 @@
const Library& result = Library::Handle(Library::New());
result.StorePointer(&result.raw_ptr()->name_, Symbols::Empty().raw());
result.StorePointer(&result.raw_ptr()->url_, url.raw());
- result.raw_ptr()->resolved_names_ = Object::empty_array().raw();
- result.raw_ptr()->dictionary_ = Object::empty_array().raw();
+ result.StorePointer(&result.raw_ptr()->resolved_names_,
+ Object::empty_array().raw());
+ result.StorePointer(&result.raw_ptr()->dictionary_,
+ Object::empty_array().raw());
result.StorePointer(&result.raw_ptr()->metadata_,
GrowableObjectArray::New(4, Heap::kOld));
- result.raw_ptr()->anonymous_classes_ = Object::empty_array().raw();
- result.raw_ptr()->num_anonymous_ = 0;
- result.raw_ptr()->imports_ = Object::empty_array().raw();
- result.raw_ptr()->exports_ = Object::empty_array().raw();
- result.raw_ptr()->loaded_scripts_ = Array::null();
+ result.StorePointer(&result.raw_ptr()->anonymous_classes_,
+ Object::empty_array().raw());
+ result.StoreNonPointer(&result.raw_ptr()->num_anonymous_, 0);
+ result.StorePointer(&result.raw_ptr()->imports_, Object::empty_array().raw());
+ result.StorePointer(&result.raw_ptr()->exports_, Object::empty_array().raw());
+ result.StorePointer(&result.raw_ptr()->loaded_scripts_, Array::null());
result.raw_ptr()->load_error_ = Instance::null();
result.set_native_entry_resolver(NULL);
result.set_native_entry_symbol_resolver(NULL);
- result.raw_ptr()->corelib_imported_ = true;
+ result.StoreNonPointer(&result.raw_ptr()->corelib_imported_, true);
result.set_debuggable(false);
result.set_is_dart_scheme(url.StartsWith(Symbols::DartScheme()));
- result.raw_ptr()->load_state_ = RawLibrary::kAllocated;
- result.raw_ptr()->index_ = -1;
+ result.StoreNonPointer(&result.raw_ptr()->load_state_,
+ RawLibrary::kAllocated);
+ result.StoreNonPointer(&result.raw_ptr()->index_, -1);
const intptr_t kInitialNameCacheSize = 64;
result.InitResolvedNamesCache(kInitialNameCacheSize);
result.InitClassDictionary();
@@ -9951,7 +9959,7 @@
void LibraryPrefix::set_is_loaded() const {
- raw_ptr()->is_loaded_ = true;
+ StoreNonPointer(&raw_ptr()->is_loaded_, true);
}
@@ -10070,8 +10078,8 @@
result.set_name(name);
result.set_num_imports(0);
result.set_importer(importer);
- result.raw_ptr()->is_deferred_load_ = deferred_load;
- result.raw_ptr()->is_loaded_ = !deferred_load;
+ result.StoreNonPointer(&result.raw_ptr()->is_deferred_load_, deferred_load);
+ result.StoreNonPointer(&result.raw_ptr()->is_loaded_, !deferred_load);
result.set_imports(Array::Handle(Array::New(kInitialSize)));
result.AddImport(import);
result.set_dependent_code(Object::null_array());
@@ -10091,7 +10099,7 @@
void LibraryPrefix::set_num_imports(intptr_t value) const {
- raw_ptr()->num_imports_ = value;
+ StoreNonPointer(&raw_ptr()->num_imports_, value);
}
@@ -10447,7 +10455,7 @@
void PcDescriptors::SetLength(intptr_t value) const {
- raw_ptr()->length_ = value;
+ StoreNonPointer(&raw_ptr()->length_, value);
}
@@ -10910,7 +10918,7 @@
Heap::kOld);
NoGCScope no_gc;
result ^= raw;
- result.raw_ptr()->num_entries_ = num_variables;
+ result.StoreNonPointer(&result.raw_ptr()->num_entries_, num_variables);
}
return result.raw();
}
@@ -11009,7 +11017,7 @@
Heap::kOld);
NoGCScope no_gc;
result ^= raw;
- result.raw_ptr()->num_entries_ = num_handlers;
+ result.StoreNonPointer(&result.raw_ptr()->num_entries_, num_handlers);
}
const Array& handled_types_data = (num_handlers == 0) ?
Object::empty_array() :
@@ -11219,7 +11227,7 @@
void DeoptInfo::SetLength(intptr_t value) const {
// This is only safe because we create a new Smi, which does not cause
// heap allocation.
- raw_ptr()->length_ = Smi::New(value);
+ StoreSmi(&raw_ptr()->length_, Smi::New(value));
}
@@ -11264,7 +11272,7 @@
void ICData::set_deopt_id(intptr_t value) const {
ASSERT(value <= kMaxInt32);
- raw_ptr()->deopt_id_ = value;
+ StoreNonPointer(&raw_ptr()->deopt_id_, value);
}
@@ -11337,7 +11345,7 @@
void ICData::set_state_bits(uint32_t bits) const {
- raw_ptr()->state_bits_ = bits;
+ StoreNonPointer(&raw_ptr()->state_bits_, bits);
}
@@ -11861,7 +11869,7 @@
void Code::set_state_bits(intptr_t bits) const {
- raw_ptr()->state_bits_ = bits;
+ StoreNonPointer(&raw_ptr()->state_bits_, bits);
}
@@ -12641,7 +12649,7 @@
void MegamorphicCache::set_mask(intptr_t mask) const {
- raw_ptr()->mask_ = Smi::New(mask);
+ StoreSmi(&raw_ptr()->mask_, Smi::New(mask));
}
@@ -12651,7 +12659,7 @@
void MegamorphicCache::set_filled_entry_count(intptr_t count) const {
- raw_ptr()->filled_entry_count_ = count;
+ StoreNonPointer(&raw_ptr()->filled_entry_count_, count);
}
@@ -12960,12 +12968,12 @@
void LanguageError::set_token_pos(intptr_t value) const {
ASSERT(value >= 0);
- raw_ptr()->token_pos_ = value;
+ StoreNonPointer(&raw_ptr()->token_pos_, value);
}
void LanguageError::set_kind(uint8_t value) const {
- raw_ptr()->kind_ = value;
+ StoreNonPointer(&raw_ptr()->kind_, value);
}
@@ -14665,21 +14673,21 @@
result.set_type_class(clazz);
result.set_arguments(arguments);
result.set_token_pos(token_pos);
- result.raw_ptr()->type_state_ = RawType::kAllocated;
+ result.StoreNonPointer(&result.raw_ptr()->type_state_, RawType::kAllocated);
return result.raw();
}
void Type::set_token_pos(intptr_t token_pos) const {
ASSERT(token_pos >= 0);
- raw_ptr()->token_pos_ = token_pos;
+ StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
void Type::set_type_state(int8_t state) const {
ASSERT((state >= RawType::kAllocated) &&
(state <= RawType::kFinalizedUninstantiated));
- raw_ptr()->type_state_ = state;
+ StoreNonPointer(&raw_ptr()->type_state_, state);
}
@@ -14952,7 +14960,7 @@
void TypeParameter::set_index(intptr_t value) const {
ASSERT(value >= 0);
- raw_ptr()->index_ = value;
+ StoreNonPointer(&raw_ptr()->index_, value);
}
@@ -15074,14 +15082,15 @@
result.set_name(name);
result.set_bound(bound);
result.set_token_pos(token_pos);
- result.raw_ptr()->type_state_ = RawTypeParameter::kAllocated;
+ result.StoreNonPointer(&result.raw_ptr()->type_state_,
+ RawTypeParameter::kAllocated);
return result.raw();
}
void TypeParameter::set_token_pos(intptr_t token_pos) const {
ASSERT(token_pos >= 0);
- raw_ptr()->token_pos_ = token_pos;
+ StoreNonPointer(&raw_ptr()->token_pos_, token_pos);
}
@@ -15089,7 +15098,7 @@
ASSERT((state == RawTypeParameter::kAllocated) ||
(state == RawTypeParameter::kBeingFinalized) ||
(state == RawTypeParameter::kFinalizedUninstantiated));
- raw_ptr()->type_state_ = state;
+ StoreNonPointer(&raw_ptr()->type_state_, state);
}
@@ -15870,7 +15879,7 @@
void Mint::set_value(int64_t value) const {
- raw_ptr()->value_ = value;
+ StoreNonPointer(&raw_ptr()->value_, value);
}
@@ -15991,7 +16000,7 @@
void Double::set_value(double value) const {
- raw_ptr()->value_ = value;
+ StoreNonPointer(&raw_ptr()->value_, value);
}
@@ -19207,22 +19216,22 @@
void Float32x4::set_x(float value) const {
- raw_ptr()->value_[0] = value;
+ StoreNonPointer(&raw_ptr()->value_[0], value);
}
void Float32x4::set_y(float value) const {
- raw_ptr()->value_[1] = value;
+ StoreNonPointer(&raw_ptr()->value_[1], value);
}
void Float32x4::set_z(float value) const {
- raw_ptr()->value_[2] = value;
+ StoreNonPointer(&raw_ptr()->value_[2], value);
}
void Float32x4::set_w(float value) const {
- raw_ptr()->value_[3] = value;
+ StoreNonPointer(&raw_ptr()->value_[3], value);
}
@@ -19302,22 +19311,22 @@
void Int32x4::set_x(int32_t value) const {
- raw_ptr()->value_[0] = value;
+ StoreNonPointer(&raw_ptr()->value_[0], value);
}
void Int32x4::set_y(int32_t value) const {
- raw_ptr()->value_[1] = value;
+ StoreNonPointer(&raw_ptr()->value_[1], value);
}
void Int32x4::set_z(int32_t value) const {
- raw_ptr()->value_[2] = value;
+ StoreNonPointer(&raw_ptr()->value_[2], value);
}
void Int32x4::set_w(int32_t value) const {
- raw_ptr()->value_[3] = value;
+ StoreNonPointer(&raw_ptr()->value_[3], value);
}
@@ -19414,12 +19423,12 @@
void Float64x2::set_x(double x) const {
- raw_ptr()->value_[0] = x;
+ StoreNonPointer(&raw_ptr()->value_[0], x);
}
void Float64x2::set_y(double y) const {
- raw_ptr()->value_[1] = y;
+ StoreNonPointer(&raw_ptr()->value_[1], y);
}
@@ -19584,7 +19593,7 @@
space);
NoGCScope no_gc;
result ^= raw;
- result.raw_ptr()->id_ = id;
+ result.StoreNonPointer(&result.raw_ptr()->id_, id);
}
return result.raw();
}
@@ -19613,7 +19622,7 @@
space);
NoGCScope no_gc;
result ^= raw;
- result.raw_ptr()->send_port_ = send_port.raw();
+ result.StorePointer(&result.raw_ptr()->send_port_, send_port.raw());
}
if (is_control_port) {
PortMap::SetPortState(id, PortMap::kControlPort);
@@ -19642,7 +19651,7 @@
space);
NoGCScope no_gc;
result ^= raw;
- result.raw_ptr()->id_ = id;
+ result.StoreNonPointer(&result.raw_ptr()->id_, id);
}
return result.raw();
}
@@ -19751,7 +19760,7 @@
void Stacktrace::set_expand_inlined(bool value) const {
- raw_ptr()->expand_inlined_ = value;
+ StoreNonPointer(&raw_ptr()->expand_inlined_, value);
}
@@ -19967,7 +19976,7 @@
void JSRegExp::set_num_bracket_expressions(intptr_t value) const {
- raw_ptr()->num_bracket_expressions_ = Smi::New(value);
+ StoreSmi(&raw_ptr()->num_bracket_expressions_, Smi::New(value));
}
« no previous file with comments | « runtime/vm/object.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698