| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 71c32859bca6695653d64bd3ebeca7271c460701..feca669fc51dd35df09c0fc4babe1eabb227b78d 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -6837,31 +6837,21 @@ MaybeObject* Map::CopyReplaceDescriptors(DescriptorArray* descriptors,
|
| }
|
|
|
|
|
| +// Since this method is used to rewrite an existing transition tree, it can
|
| +// always insert transitions without checking.
|
| Handle<Map> Map::CopyInstallDescriptors(Handle<Map> map,
|
| int new_descriptor,
|
| Handle<DescriptorArray> descriptors) {
|
| - CALL_HEAP_FUNCTION(map->GetIsolate(),
|
| - map->CopyInstallDescriptors(new_descriptor, *descriptors),
|
| - Map);
|
| -}
|
| -
|
| -
|
| -// Since this method is used to rewrite an existing transition tree, it can
|
| -// always insert transitions without checking.
|
| -MaybeObject* Map::CopyInstallDescriptors(int new_descriptor,
|
| - DescriptorArray* descriptors) {
|
| ASSERT(descriptors->IsSortedNoDuplicates());
|
|
|
| - Map* result;
|
| - MaybeObject* maybe_result = CopyDropDescriptors();
|
| - if (!maybe_result->To(&result)) return maybe_result;
|
| + Handle<Map> result = Map::CopyDropDescriptors(map);
|
|
|
| - result->InitializeDescriptors(descriptors);
|
| + result->InitializeDescriptors(*descriptors);
|
| result->SetNumberOfOwnDescriptors(new_descriptor + 1);
|
|
|
| - int unused_property_fields = this->unused_property_fields();
|
| + int unused_property_fields = map->unused_property_fields();
|
| if (descriptors->GetDetails(new_descriptor).type() == FIELD) {
|
| - unused_property_fields = this->unused_property_fields() - 1;
|
| + unused_property_fields = map->unused_property_fields() - 1;
|
| if (unused_property_fields < 0) {
|
| unused_property_fields += JSObject::kFieldsAdded;
|
| }
|
| @@ -6870,14 +6860,12 @@ MaybeObject* Map::CopyInstallDescriptors(int new_descriptor,
|
| result->set_unused_property_fields(unused_property_fields);
|
| result->set_owns_descriptors(false);
|
|
|
| - Name* name = descriptors->GetKey(new_descriptor);
|
| - TransitionArray* transitions;
|
| - MaybeObject* maybe_transitions =
|
| - AddTransition(name, result, SIMPLE_TRANSITION);
|
| - if (!maybe_transitions->To(&transitions)) return maybe_transitions;
|
| + Handle<Name> name = handle(descriptors->GetKey(new_descriptor));
|
| + Handle<TransitionArray> transitions = Map::AddTransition(map, name, result,
|
| + SIMPLE_TRANSITION);
|
|
|
| - set_transitions(transitions);
|
| - result->SetBackPointer(this);
|
| + map->set_transitions(*transitions);
|
| + result->SetBackPointer(*map);
|
|
|
| return result;
|
| }
|
|
|