From: ishell@chromium.org Date: Thu, 24 Apr 2014 15:16:26 +0000 (+0000) Subject: Dictionary::Add() handlified. X-Git-Tag: upstream/4.7.83~9445 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e0c29654cd4a4d58a581945950c103253127bf4;p=platform%2Fupstream%2Fv8.git Dictionary::Add() handlified. R=yangguo@chromium.org Review URL: https://codereview.chromium.org/249723004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20948 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/factory.cc b/src/factory.cc index 36d7332..5a21524 100644 --- a/src/factory.cc +++ b/src/factory.cc @@ -1500,7 +1500,7 @@ Handle Factory::NewGlobalObject(Handle constructor) { Handle name(descs->GetKey(i)); Handle value(descs->GetCallbacksObject(i), isolate()); Handle cell = NewPropertyCell(value); - NameDictionary::AddNameEntry(dictionary, name, cell, d); + NameDictionary::Add(dictionary, name, cell, d); } // Allocate the global object and initialize it with the backing store. diff --git a/src/objects.cc b/src/objects.cc index 6cd0484..57bcf84 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -667,7 +667,7 @@ void JSObject::SetNormalizedProperty(Handle object, store_value = object->GetIsolate()->factory()->NewPropertyCell(value); } - property_dictionary = NameDictionary::AddNameEntry( + property_dictionary = NameDictionary::Add( property_dictionary, name, store_value, details); object->set_properties(*property_dictionary); return; @@ -1942,7 +1942,7 @@ void JSObject::AddSlowProperty(Handle object, } PropertyDetails details = PropertyDetails(attributes, NORMAL, 0); Handle 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 object, Handle 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 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 object, Handle 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: @@ -14988,9 +14988,9 @@ template int Dictionary >:: NumberOfElementsFilterAttributes(PropertyAttributes); -template MaybeObject* +template Handle Dictionary >::Add( - Handle, Object*, PropertyDetails); + Handle, Handle, Handle, PropertyDetails); template MaybeObject* Dictionary >:: @@ -15000,13 +15000,19 @@ template int Dictionary:: NumberOfElementsFilterAttributes(PropertyAttributes); -template MaybeObject* -Dictionary::Add( - uint32_t, Object*, PropertyDetails); +template Handle +Dictionary:: + Add(Handle, + uint32_t, + Handle, + PropertyDetails); -template MaybeObject* +template Handle Dictionary:: - Add(uint32_t, Object*, PropertyDetails); + Add(Handle, + uint32_t, + Handle, + PropertyDetails); template MaybeObject* Dictionary:: @@ -15045,16 +15051,6 @@ int HashTable:: FindEntry(uint32_t); -Handle NameDictionary::AddNameEntry(Handle dict, - Handle name, - Handle value, - PropertyDetails details) { - CALL_HEAP_FUNCTION(dict->GetIsolate(), - dict->Add(name, *value, details), - NameDictionary); -} - - Handle JSObject::PrepareSlowElementsForSort( Handle object, uint32_t limit) { ASSERT(object->HasDictionaryElements()); @@ -15495,7 +15491,7 @@ Handle JSGlobalObject::EnsurePropertyCell( isolate->factory()->the_hole_value()); PropertyDetails details(NONE, NORMAL, 0); details = details.AsDeleted(); - Handle dictionary = NameDictionary::AddNameEntry( + Handle dictionary = NameDictionary::Add( handle(global->property_dictionary()), name, cell, details); global->set_properties(*dictionary); return cell; @@ -15977,20 +15973,17 @@ Handle Dictionary::AtPut( template -MaybeObject* Dictionary::Add( +Handle Dictionary::Add( + Handle dictionary, Key key, - Object* value, + Handle 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)); } @@ -16066,9 +16059,7 @@ Handle 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); } @@ -16077,10 +16068,7 @@ Handle UnseededNumberDictionary::AddNumberEntry( uint32_t key, Handle 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)); } diff --git a/src/objects.h b/src/objects.h index 5f695db..bb4891f 100644 --- a/src/objects.h +++ b/src/objects.h @@ -4064,7 +4064,7 @@ class Dictionary: public HashTable { PretenureFlag pretenure = NOT_TENURED); // Creates a new dictionary. - static Handle New( + MUST_USE_RESULT static Handle New( Isolate* isolate, int at_least_space_for, PretenureFlag pretenure = NOT_TENURED); @@ -4089,9 +4089,11 @@ class Dictionary: public HashTable { Object* value, PropertyDetails details); - MUST_USE_RESULT MaybeObject* Add(Key key, - Object* value, - PropertyDetails details); + MUST_USE_RESULT static Handle Add( + Handle dictionary, + Key key, + Handle value, + PropertyDetails details); protected: // Generic at put operation. @@ -4153,12 +4155,6 @@ class NameDictionary: public Dictionary AddNameEntry(Handle dict, - Handle name, - Handle value, - PropertyDetails details); }; diff --git a/src/runtime.cc b/src/runtime.cc index c908780..7a2958f 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -15125,7 +15125,7 @@ void Runtime::InitializeIntrinsicFunctionNames(Isolate* isolate, for (int i = 0; i < kNumFunctions; ++i) { const char* name = kIntrinsicFunctions[i].name; if (name == NULL) continue; - Handle new_dict = NameDictionary::AddNameEntry( + Handle new_dict = NameDictionary::Add( dict, isolate->factory()->InternalizeUtf8String(name), Handle(Smi::FromInt(i), isolate),