Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 81eec5e3df5cf87ec111ee876bc222f5881f2c63..3a4b9c9d34d938cd79838fd6f0af37e264753c46 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -6584,8 +6584,7 @@ Handle<Map> Map::ShareDescriptor(Handle<Map> map, |
if (old_size == 0) { |
descriptors = DescriptorArray::Allocate(map->GetIsolate(), 0, 1); |
} else { |
- EnsureDescriptorSlack( |
- map, SlackForArraySize(old_size, kMaxNumberOfDescriptors)); |
+ EnsureDescriptorSlack(map, old_size < 4 ? 1 : old_size / 2); |
descriptors = handle(map->instance_descriptors()); |
} |
} |
@@ -6610,11 +6609,8 @@ void Map::ConnectTransition(Handle<Map> parent, Handle<Map> child, |
DCHECK(child->is_prototype_map()); |
} else { |
Handle<TransitionArray> transitions = |
- TransitionArray::Insert(parent, name, child, flag); |
- if (!parent->HasTransitionArray() || |
- *transitions != parent->transitions()) { |
- parent->set_transitions(*transitions); |
- } |
+ TransitionArray::CopyInsert(parent, name, child, flag); |
+ parent->set_transitions(*transitions); |
child->SetBackPointer(*parent); |
} |
} |