| Index: src/heap.cc
 | 
| diff --git a/src/heap.cc b/src/heap.cc
 | 
| index 15fd430e49409f99327abe605bad2efef6d7c8f6..38b448bcb39d5ed8568adeb5225dabb510b877fc 100644
 | 
| --- a/src/heap.cc
 | 
| +++ b/src/heap.cc
 | 
| @@ -3824,21 +3824,18 @@ MaybeObject* Heap::AllocateInitialMap(JSFunction* fun) {
 | 
|    // suggested by the function.
 | 
|    int instance_size = fun->shared()->CalculateInstanceSize();
 | 
|    int in_object_properties = fun->shared()->CalculateInObjectProperties();
 | 
| -  Object* map_obj;
 | 
| -  { MaybeObject* maybe_map_obj = AllocateMap(JS_OBJECT_TYPE, instance_size);
 | 
| -    if (!maybe_map_obj->ToObject(&map_obj)) return maybe_map_obj;
 | 
| -  }
 | 
| +  Map* map;
 | 
| +  MaybeObject* maybe_map = AllocateMap(JS_OBJECT_TYPE, instance_size);
 | 
| +  if (!maybe_map->To(&map)) return maybe_map;
 | 
|  
 | 
|    // Fetch or allocate prototype.
 | 
|    Object* prototype;
 | 
|    if (fun->has_instance_prototype()) {
 | 
|      prototype = fun->instance_prototype();
 | 
|    } else {
 | 
| -    { MaybeObject* maybe_prototype = AllocateFunctionPrototype(fun);
 | 
| -      if (!maybe_prototype->ToObject(&prototype)) return maybe_prototype;
 | 
| -    }
 | 
| +    MaybeObject* maybe_prototype = AllocateFunctionPrototype(fun);
 | 
| +    if (!maybe_prototype->To(&prototype)) return maybe_prototype;
 | 
|    }
 | 
| -  Map* map = Map::cast(map_obj);
 | 
|    map->set_inobject_properties(in_object_properties);
 | 
|    map->set_unused_property_fields(in_object_properties);
 | 
|    map->set_prototype(prototype);
 | 
| @@ -3857,12 +3854,10 @@ MaybeObject* Heap::AllocateInitialMap(JSFunction* fun) {
 | 
|        fun->shared()->ForbidInlineConstructor();
 | 
|      } else {
 | 
|        DescriptorArray* descriptors;
 | 
| -      { MaybeObject* maybe_descriptors_obj =
 | 
| -            DescriptorArray::Allocate(count, DescriptorArray::MAY_BE_SHARED);
 | 
| -        if (!maybe_descriptors_obj->To<DescriptorArray>(&descriptors)) {
 | 
| -          return maybe_descriptors_obj;
 | 
| -        }
 | 
| -      }
 | 
| +      MaybeObject* maybe_descriptors =
 | 
| +          DescriptorArray::Allocate(count, DescriptorArray::MAY_BE_SHARED);
 | 
| +      if (!maybe_descriptors->To(&descriptors)) return maybe_descriptors;
 | 
| +
 | 
|        DescriptorArray::WhitenessWitness witness(descriptors);
 | 
|        for (int i = 0; i < count; i++) {
 | 
|          String* name = fun->shared()->GetThisPropertyAssignmentName(i);
 | 
| @@ -3870,7 +3865,7 @@ MaybeObject* Heap::AllocateInitialMap(JSFunction* fun) {
 | 
|          FieldDescriptor field(name, i, NONE, i + 1);
 | 
|          descriptors->Set(i, &field, witness);
 | 
|        }
 | 
| -      descriptors->SortUnchecked(witness);
 | 
| +      descriptors->Sort(witness);
 | 
|  
 | 
|        // The descriptors may contain duplicates because the compiler does not
 | 
|        // guarantee the uniqueness of property names (it would have required
 | 
| @@ -3879,7 +3874,7 @@ MaybeObject* Heap::AllocateInitialMap(JSFunction* fun) {
 | 
|        if (HasDuplicates(descriptors)) {
 | 
|          fun->shared()->ForbidInlineConstructor();
 | 
|        } else {
 | 
| -        map->set_instance_descriptors(descriptors);
 | 
| +        map->InitializeDescriptors(descriptors);
 | 
|          map->set_pre_allocated_property_fields(count);
 | 
|          map->set_unused_property_fields(in_object_properties - count);
 | 
|        }
 | 
| 
 |