| Index: src/objects.cc
 | 
| diff --git a/src/objects.cc b/src/objects.cc
 | 
| index 86baab160370c9e06b21d466122d15213f35de64..5c10f54aefb793f895b45f64597109e6fb4e9dda 100644
 | 
| --- a/src/objects.cc
 | 
| +++ b/src/objects.cc
 | 
| @@ -667,8 +667,8 @@ void JSObject::SetNormalizedProperty(Handle<JSObject> object,
 | 
|        store_value = object->GetIsolate()->factory()->NewPropertyCell(value);
 | 
|      }
 | 
|  
 | 
| -    property_dictionary = NameDictionary::AddNameEntry(
 | 
| -        property_dictionary, name, store_value, details);
 | 
| +    property_dictionary = NameDictionary::Add(
 | 
| +        property_dictionary, *name, store_value, details);
 | 
|      object->set_properties(*property_dictionary);
 | 
|      return;
 | 
|    }
 | 
| @@ -1942,7 +1942,7 @@ void JSObject::AddSlowProperty(Handle<JSObject> object,
 | 
|    }
 | 
|    PropertyDetails details = PropertyDetails(attributes, NORMAL, 0);
 | 
|    Handle<NameDictionary> result =
 | 
| -      NameDictionary::AddNameEntry(dict, name, value, details);
 | 
| +      NameDictionary::Add(dict, *name, value, details);
 | 
|    if (*dict != *result) object->set_properties(*result);
 | 
|  }
 | 
|  
 | 
| @@ -4641,7 +4641,7 @@ void JSObject::NormalizeProperties(Handle<JSObject> object,
 | 
|          Handle<Object> value(descs->GetConstant(i), isolate);
 | 
|          PropertyDetails d = PropertyDetails(
 | 
|              details.attributes(), NORMAL, i + 1);
 | 
| -        dictionary = NameDictionary::AddNameEntry(dictionary, key, value, d);
 | 
| +        dictionary = NameDictionary::Add(dictionary, *key, value, d);
 | 
|          break;
 | 
|        }
 | 
|        case FIELD: {
 | 
| @@ -4650,7 +4650,7 @@ void JSObject::NormalizeProperties(Handle<JSObject> object,
 | 
|              object->RawFastPropertyAt(descs->GetFieldIndex(i)), isolate);
 | 
|          PropertyDetails d =
 | 
|              PropertyDetails(details.attributes(), NORMAL, i + 1);
 | 
| -        dictionary = NameDictionary::AddNameEntry(dictionary, key, value, d);
 | 
| +        dictionary = NameDictionary::Add(dictionary, *key, value, d);
 | 
|          break;
 | 
|        }
 | 
|        case CALLBACKS: {
 | 
| @@ -4658,7 +4658,7 @@ void JSObject::NormalizeProperties(Handle<JSObject> object,
 | 
|          Handle<Object> value(descs->GetCallbacksObject(i), isolate);
 | 
|          PropertyDetails d = PropertyDetails(
 | 
|              details.attributes(), CALLBACKS, i + 1);
 | 
| -        dictionary = NameDictionary::AddNameEntry(dictionary, key, value, d);
 | 
| +        dictionary = NameDictionary::Add(dictionary, *key, value, d);
 | 
|          break;
 | 
|        }
 | 
|        case INTERCEPTOR:
 | 
| @@ -14973,9 +14973,9 @@ template int
 | 
|  Dictionary<NameDictionary, NameDictionaryShape, Name*>::
 | 
|      NumberOfElementsFilterAttributes(PropertyAttributes);
 | 
|  
 | 
| -template MaybeObject*
 | 
| +template Handle<NameDictionary>
 | 
|  Dictionary<NameDictionary, NameDictionaryShape, Name*>::Add(
 | 
| -    Name*, Object*, PropertyDetails);
 | 
| +    Handle<NameDictionary>, Name*, Handle<Object>, PropertyDetails);
 | 
|  
 | 
|  template MaybeObject*
 | 
|  Dictionary<NameDictionary, NameDictionaryShape, Name*>::
 | 
| @@ -14985,13 +14985,19 @@ template int
 | 
|  Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
 | 
|      NumberOfElementsFilterAttributes(PropertyAttributes);
 | 
|  
 | 
| -template MaybeObject*
 | 
| -Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::Add(
 | 
| -    uint32_t, Object*, PropertyDetails);
 | 
| +template Handle<SeededNumberDictionary>
 | 
| +Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
 | 
| +    Add(Handle<SeededNumberDictionary>,
 | 
| +        uint32_t,
 | 
| +        Handle<Object>,
 | 
| +        PropertyDetails);
 | 
|  
 | 
| -template MaybeObject*
 | 
| +template Handle<UnseededNumberDictionary>
 | 
|  Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>::
 | 
| -    Add(uint32_t, Object*, PropertyDetails);
 | 
| +    Add(Handle<UnseededNumberDictionary>,
 | 
| +        uint32_t,
 | 
| +        Handle<Object>,
 | 
| +        PropertyDetails);
 | 
|  
 | 
|  template MaybeObject*
 | 
|  Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
 | 
| @@ -15030,16 +15036,6 @@ int HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
 | 
|      FindEntry(uint32_t);
 | 
|  
 | 
|  
 | 
| -Handle<NameDictionary> NameDictionary::AddNameEntry(Handle<NameDictionary> dict,
 | 
| -                                                    Handle<Name> name,
 | 
| -                                                    Handle<Object> value,
 | 
| -                                                    PropertyDetails details) {
 | 
| -  CALL_HEAP_FUNCTION(dict->GetIsolate(),
 | 
| -                     dict->Add(*name, *value, details),
 | 
| -                     NameDictionary);
 | 
| -}
 | 
| -
 | 
| -
 | 
|  Handle<Object> JSObject::PrepareSlowElementsForSort(
 | 
|      Handle<JSObject> object, uint32_t limit) {
 | 
|    ASSERT(object->HasDictionaryElements());
 | 
| @@ -15480,8 +15476,8 @@ Handle<PropertyCell> JSGlobalObject::EnsurePropertyCell(
 | 
|          isolate->factory()->the_hole_value());
 | 
|      PropertyDetails details(NONE, NORMAL, 0);
 | 
|      details = details.AsDeleted();
 | 
| -    Handle<NameDictionary> dictionary = NameDictionary::AddNameEntry(
 | 
| -        handle(global->property_dictionary()), name, cell, details);
 | 
| +    Handle<NameDictionary> dictionary = NameDictionary::Add(
 | 
| +        handle(global->property_dictionary()), *name, cell, details);
 | 
|      global->set_properties(*dictionary);
 | 
|      return cell;
 | 
|    } else {
 | 
| @@ -15960,20 +15956,17 @@ Handle<Derived> Dictionary<Derived, Shape, Key>::AtPut(
 | 
|  
 | 
|  
 | 
|  template<typename Derived, typename Shape, typename Key>
 | 
| -MaybeObject* Dictionary<Derived, Shape, Key>::Add(
 | 
| +Handle<Derived> Dictionary<Derived, Shape, Key>::Add(
 | 
| +    Handle<Derived> dictionary,
 | 
|      Key key,
 | 
| -    Object* value,
 | 
| +    Handle<Object> value,
 | 
|      PropertyDetails details) {
 | 
|    // Valdate key is absent.
 | 
| -  SLOW_ASSERT((this->FindEntry(key) == Dictionary::kNotFound));
 | 
| +  SLOW_ASSERT((dictionary->FindEntry(key) == Dictionary::kNotFound));
 | 
|    // Check whether the dictionary should be extended.
 | 
| -  Object* obj;
 | 
| -  { MaybeObject* maybe_obj = EnsureCapacity(1, key);
 | 
| -    if (!maybe_obj->ToObject(&obj)) return maybe_obj;
 | 
| -  }
 | 
| +  dictionary = EnsureCapacity(dictionary, 1, key);
 | 
|  
 | 
| -  return Dictionary::cast(obj)->AddEntry(
 | 
| -      key, value, details, Dictionary::Hash(key));
 | 
| +  return AddEntry(dictionary, key, value, details, dictionary->Hash(key));
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -16049,9 +16042,7 @@ Handle<SeededNumberDictionary> SeededNumberDictionary::AddNumberEntry(
 | 
|      PropertyDetails details) {
 | 
|    dictionary->UpdateMaxNumberKey(key);
 | 
|    SLOW_ASSERT(dictionary->FindEntry(key) == kNotFound);
 | 
| -  CALL_HEAP_FUNCTION(dictionary->GetIsolate(),
 | 
| -                     dictionary->Add(key, *value, details),
 | 
| -                     SeededNumberDictionary);
 | 
| +  return Add(dictionary, key, value, details);
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -16060,10 +16051,7 @@ Handle<UnseededNumberDictionary> UnseededNumberDictionary::AddNumberEntry(
 | 
|      uint32_t key,
 | 
|      Handle<Object> value) {
 | 
|    SLOW_ASSERT(dictionary->FindEntry(key) == kNotFound);
 | 
| -  CALL_HEAP_FUNCTION(dictionary->GetIsolate(),
 | 
| -                     dictionary->Add(
 | 
| -                         key, *value, PropertyDetails(NONE, NORMAL, 0)),
 | 
| -                     UnseededNumberDictionary);
 | 
| +  return Add(dictionary, key, value, PropertyDetails(NONE, NORMAL, 0));
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |