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

Unified Diff: runtime/vm/object.cc

Issue 1289643005: Rename accessors of class Field to make it more apparent as to what is being accessed - static fiel… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: self-code-review Created 5 years, 4 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
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 1d6e33b59437726ee85bbe006a150a9e8e1a86f6..0bd171a42e00f948f5a3ed563af5d4d687aae2ee 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1510,7 +1510,7 @@ RawError* Object::Init(Isolate* isolate) {
field_name = Symbols::New("cid"#clazz); \
field = Field::New(field_name, true, false, true, false, cls, 0); \
value = Smi::New(k##clazz##Cid); \
- field.set_value(value); \
+ field.SetStaticFieldValue(value, true); \
field.set_type(Type::Handle(Type::IntType())); \
cls.AddField(field); \
@@ -2034,7 +2034,7 @@ RawArray* Class::OffsetToFieldMap() const {
for (intptr_t i = 0; i < fields.Length(); ++i) {
f ^= fields.At(i);
if (!f.is_static()) {
- array.SetAt(f.Offset() >> kWordSizeLog2, f);
+ array.SetAt(f.InstanceFieldOffset() >> kWordSizeLog2, f);
}
}
cls = cls.SuperClass();
@@ -2584,8 +2584,8 @@ void Class::CalculateFieldOffsets() const {
field ^= flds.At(i);
// Offset is computed only for instance fields.
if (!field.is_static()) {
- ASSERT(field.Offset() == 0);
- field.SetOffset(offset);
+ ASSERT(field.InstanceFieldOffset() == 0);
+ field.SetInstanceFieldOffset(offset);
offset += kWordSize;
}
}
@@ -7246,15 +7246,19 @@ RawClass* Field::origin() const {
}
-RawInstance* Field::value() const {
+RawInstance* Field::StaticFieldValue() const {
ASSERT(is_static()); // Valid only for static dart fields.
- return raw_ptr()->value_;
+ return raw_ptr()->value_.static_value_;
}
-void Field::set_value(const Instance& value) const {
+void Field::SetStaticFieldValue(const Instance& value,
+ bool save_initial_value) const {
ASSERT(is_static()); // Valid only for static dart fields.
- StorePointer(&raw_ptr()->value_, value.raw());
+ StorePointer(&raw_ptr()->value_.static_value_, value.raw());
+ if (save_initial_value) {
+ StorePointer(&raw_ptr()->initializer_.saved_initial_value_, value.raw());
+ }
}
@@ -7284,10 +7288,8 @@ RawField* Field::New(const String& name,
const Field& result = Field::Handle(Field::New());
result.set_name(name);
result.set_is_static(is_static);
- if (is_static) {
- result.set_value(Object::null_instance());
- } else {
- result.SetOffset(0);
+ if (!is_static) {
+ result.SetInstanceFieldOffset(0);
}
result.set_is_final(is_final);
result.set_is_const(is_const);
@@ -7319,7 +7321,7 @@ RawField* Field::Clone(const Class& new_owner) const {
PatchClass::Handle(PatchClass::New(new_owner, owner));
clone.set_owner(clone_owner);
if (!clone.is_static()) {
- clone.SetOffset(0);
+ clone.SetInstanceFieldOffset(0);
}
if (new_owner.NumTypeParameters() > 0) {
// Adjust the field type to refer to type parameters of the new owner.
@@ -7428,7 +7430,7 @@ void Field::PrintJSONImpl(JSONStream* stream, bool ref) const {
return;
}
if (is_static()) {
- const Instance& valueObj = Instance::Handle(value());
+ const Instance& valueObj = Instance::Handle(StaticFieldValue());
jsobj.AddProperty("staticValue", valueObj);
}
@@ -7474,7 +7476,8 @@ RawInstance* Field::AccessorClosure(bool make_setter) const {
closure_field = field_owner.LookupStaticField(closure_name);
if (!closure_field.IsNull()) {
ASSERT(closure_field.is_static());
- const Instance& closure = Instance::Handle(closure_field.value());
+ const Instance& closure =
+ Instance::Handle(closure_field.StaticFieldValue());
ASSERT(!closure.IsNull());
ASSERT(closure.IsClosure());
return closure.raw();
@@ -7507,7 +7510,7 @@ RawInstance* Field::AccessorClosure(bool make_setter) const {
false, // is_reflectable
field_owner,
this->token_pos());
- closure_field.set_value(Instance::Cast(result));
+ closure_field.SetStaticFieldValue(Instance::Cast(result), true);
closure_field.set_type(Type::Handle(Type::DynamicType()));
field_owner.AddField(closure_field);
@@ -7583,33 +7586,44 @@ void Field::DeoptimizeDependentCode() const {
bool Field::IsUninitialized() const {
- const Instance& value = Instance::Handle(raw_ptr()->value_);
+ const Instance& value = Instance::Handle(raw_ptr()->value_.static_value_);
ASSERT(value.raw() != Object::transition_sentinel().raw());
return value.raw() == Object::sentinel().raw();
}
-void Field::set_initializer(const Function& initializer) const {
- StorePointer(&raw_ptr()->initializer_, initializer.raw());
+void Field::SetPrecompiledInitializer(const Function& initializer) const {
+ StorePointer(&raw_ptr()->initializer_.precompiled_initializer_,
+ initializer.raw());
+}
+
+
+bool Field::HasPrecompiledInitializer() const {
+ return raw_ptr()->initializer_.value_->IsFunction();
+}
+
+
+void Field::SetSavedInitialStaticValue(const Instance& value) const {
+ StorePointer(&raw_ptr()->initializer_.saved_initial_value_, value.raw());
}
void Field::EvaluateInitializer() const {
ASSERT(is_static());
- if (value() == Object::sentinel().raw()) {
- set_value(Object::transition_sentinel());
+ if (StaticFieldValue() == Object::sentinel().raw()) {
+ SetStaticFieldValue(Object::transition_sentinel());
Object& value = Object::Handle(Compiler::EvaluateStaticInitializer(*this));
if (value.IsError()) {
- set_value(Object::null_instance());
+ SetStaticFieldValue(Object::null_instance());
Exceptions::PropagateError(Error::Cast(value));
UNREACHABLE();
}
ASSERT(value.IsNull() || value.IsInstance());
- set_value(value.IsNull() ? Instance::null_instance()
+ SetStaticFieldValue(value.IsNull() ? Instance::null_instance()
: Instance::Cast(value));
return;
- } else if (value() == Object::transition_sentinel().raw()) {
- set_value(Object::null_instance());
+ } else if (StaticFieldValue() == Object::transition_sentinel().raw()) {
+ SetStaticFieldValue(Object::null_instance());
const Array& ctor_args = Array::Handle(Array::New(1));
const String& field_name = String::Handle(name());
ctor_args.SetAt(0, field_name);
@@ -9098,7 +9112,7 @@ void Library::AddMetadata(const Class& cls,
cls,
token_pos));
field.set_type(Type::Handle(Type::DynamicType()));
- field.set_value(Array::empty_array());
+ field.SetStaticFieldValue(Array::empty_array(), true);
GrowableObjectArray& metadata =
GrowableObjectArray::Handle(this->metadata());
metadata.Add(field, Heap::kOld);
@@ -9192,13 +9206,13 @@ RawObject* Library::GetMetadata(const Object& obj) const {
return Object::empty_array().raw();
}
Object& metadata = Object::Handle();
- metadata = field.value();
- if (field.value() == Object::empty_array().raw()) {
+ metadata = field.StaticFieldValue();
+ if (field.StaticFieldValue() == Object::empty_array().raw()) {
metadata = Parser::ParseMetadata(Class::Handle(field.owner()),
field.token_pos());
if (metadata.IsArray()) {
ASSERT(Array::Cast(metadata).raw() != Object::empty_array().raw());
- field.set_value(Array::Cast(metadata));
+ field.SetStaticFieldValue(Array::Cast(metadata), true);
}
}
return metadata.raw();
@@ -10606,7 +10620,7 @@ void Namespace::AddMetadata(intptr_t token_pos, const Class& owner_class) {
owner_class,
token_pos));
field.set_type(Type::Handle(Type::DynamicType()));
- field.set_value(Array::empty_array());
+ field.SetStaticFieldValue(Array::empty_array(), true);
set_metadata_field(field);
owner_class.AddField(field);
}
@@ -10619,13 +10633,13 @@ RawObject* Namespace::GetMetadata() const {
return Object::empty_array().raw();
}
Object& metadata = Object::Handle();
- metadata = field.value();
- if (field.value() == Object::empty_array().raw()) {
+ metadata = field.StaticFieldValue();
+ if (field.StaticFieldValue() == Object::empty_array().raw()) {
metadata = Parser::ParseMetadata(Class::Handle(field.owner()),
field.token_pos());
if (metadata.IsArray()) {
ASSERT(Array::Cast(metadata).raw() != Object::empty_array().raw());
- field.set_value(Array::Cast(metadata));
+ field.SetStaticFieldValue(Array::Cast(metadata), true);
}
}
return metadata.raw();

Powered by Google App Engine
This is Rietveld 408576698