Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index ff94dd029daafa607279f93bf87eb85a1c5318ca..89d4a13f82adf2e8d303fab93756ffd914d3abc3 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -3379,12 +3379,10 @@ MaybeObject* JSObject::NormalizeProperties(PropertyNormalizationMode mode, |
} else { |
property_count += 2; // Make space for two more properties. |
} |
- Object* obj; |
- { MaybeObject* maybe_obj = |
- StringDictionary::Allocate(property_count); |
- if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
+ StringDictionary* dictionary; |
+ { MaybeObject* maybe_dictionary = StringDictionary::Allocate(property_count); |
+ if (!maybe_dictionary->To(&dictionary)) return maybe_dictionary; |
} |
- StringDictionary* dictionary = StringDictionary::cast(obj); |
DescriptorArray* descs = map_of_this->instance_descriptors(); |
for (int i = 0; i < descs->number_of_descriptors(); i++) { |
@@ -3394,36 +3392,31 @@ MaybeObject* JSObject::NormalizeProperties(PropertyNormalizationMode mode, |
PropertyDetails d = |
PropertyDetails(details.attributes(), NORMAL, details.index()); |
Object* value = descs->GetConstantFunction(i); |
- Object* result; |
- { MaybeObject* maybe_result = |
- dictionary->Add(descs->GetKey(i), value, d); |
- if (!maybe_result->ToObject(&result)) return maybe_result; |
- } |
- dictionary = StringDictionary::cast(result); |
+ MaybeObject* maybe_dictionary = |
+ dictionary->Add(descs->GetKey(i), value, d); |
+ if (!maybe_dictionary->To(&dictionary)) return maybe_dictionary; |
break; |
} |
case FIELD: { |
PropertyDetails d = |
PropertyDetails(details.attributes(), NORMAL, details.index()); |
Object* value = FastPropertyAt(descs->GetFieldIndex(i)); |
- Object* result; |
- { MaybeObject* maybe_result = |
- dictionary->Add(descs->GetKey(i), value, d); |
- if (!maybe_result->ToObject(&result)) return maybe_result; |
- } |
- dictionary = StringDictionary::cast(result); |
+ MaybeObject* maybe_dictionary = |
+ dictionary->Add(descs->GetKey(i), value, d); |
+ if (!maybe_dictionary->To(&dictionary)) return maybe_dictionary; |
break; |
} |
case CALLBACKS: { |
- PropertyDetails d = |
- PropertyDetails(details.attributes(), CALLBACKS, details.index()); |
+ if (!descs->IsProperty(i)) break; |
Object* value = descs->GetCallbacksObject(i); |
- Object* result; |
- { MaybeObject* maybe_result = |
- dictionary->Add(descs->GetKey(i), value, d); |
- if (!maybe_result->ToObject(&result)) return maybe_result; |
+ if (value->IsAccessorPair()) { |
+ MaybeObject* maybe_copy = |
+ AccessorPair::cast(value)->CopyWithoutTransitions(); |
+ if (!maybe_copy->To(&value)) return maybe_copy; |
} |
- dictionary = StringDictionary::cast(result); |
+ MaybeObject* maybe_dictionary = |
+ dictionary->Add(descs->GetKey(i), value, details); |
+ if (!maybe_dictionary->To(&dictionary)) return maybe_dictionary; |
break; |
} |
case MAP_TRANSITION: |
@@ -3445,12 +3438,12 @@ MaybeObject* JSObject::NormalizeProperties(PropertyNormalizationMode mode, |
int index = map_of_this->instance_descriptors()->NextEnumerationIndex(); |
dictionary->SetNextEnumerationIndex(index); |
- { MaybeObject* maybe_obj = |
+ Map* new_map; |
+ { MaybeObject* maybe_map = |
current_heap->isolate()->context()->global_context()-> |
normalized_map_cache()->Get(this, mode); |
- if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
+ if (!maybe_map->To(&new_map)) return maybe_map; |
} |
- Map* new_map = Map::cast(obj); |
// We have now successfully allocated all the necessary objects. |
// Changes can now be made with the guarantee that all of them take effect. |