| Index: src/lookup.cc
|
| diff --git a/src/lookup.cc b/src/lookup.cc
|
| index 1265d9056ea74f046584ebb21248a882c77bf9f0..38e5d1ad2b0a2dc6742aea89498b6d68f345c22f 100644
|
| --- a/src/lookup.cc
|
| +++ b/src/lookup.cc
|
| @@ -517,18 +517,21 @@ void LookupIterator::WriteDataValue(Handle<Object> value) {
|
| Handle<JSObject> object = Handle<JSObject>::cast(holder);
|
| ElementsAccessor* accessor = object->GetElementsAccessor();
|
| accessor->Set(object, number_, *value);
|
| + } else if (holder->HasFastProperties()) {
|
| + if (property_details_.type() == v8::internal::DATA) {
|
| + JSObject::cast(*holder)->WriteToField(descriptor_number(),
|
| + property_details_, *value);
|
| + } else {
|
| + DCHECK_EQ(v8::internal::DATA_CONSTANT, property_details_.type());
|
| + }
|
| } else if (holder->IsJSGlobalObject()) {
|
| Handle<GlobalDictionary> property_dictionary =
|
| handle(JSObject::cast(*holder)->global_dictionary());
|
| PropertyCell::UpdateCell(property_dictionary, dictionary_entry(), value,
|
| property_details_);
|
| - } else if (!holder->HasFastProperties()) {
|
| + } else {
|
| NameDictionary* property_dictionary = holder->property_dictionary();
|
| property_dictionary->ValueAtPut(dictionary_entry(), *value);
|
| - } else if (property_details_.type() == v8::internal::DATA) {
|
| - JSObject::cast(*holder)->WriteToField(descriptor_number(), *value);
|
| - } else {
|
| - DCHECK_EQ(v8::internal::DATA_CONSTANT, property_details_.type());
|
| }
|
| }
|
|
|
|
|