| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index ba894e9f317d63b13dd88172b76057bca196f756..e6c9b66ce3ec1b330de327b3cd1315800295ea57 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -14243,39 +14243,36 @@ PropertyCell* GlobalObject::GetPropertyCell(LookupResult* result) {
|
| }
|
|
|
|
|
| -Handle<PropertyCell> GlobalObject::EnsurePropertyCell(
|
| - Handle<GlobalObject> global,
|
| - Handle<Name> name) {
|
| - Isolate* isolate = global->GetIsolate();
|
| - CALL_HEAP_FUNCTION(isolate,
|
| - global->EnsurePropertyCell(*name),
|
| - PropertyCell);
|
| +// TODO(mstarzinger): Temporary wrapper until handlified.
|
| +static Handle<NameDictionary> NameDictionaryAdd(Handle<NameDictionary> dict,
|
| + Handle<Name> name,
|
| + Handle<Object> value,
|
| + PropertyDetails details) {
|
| + CALL_HEAP_FUNCTION(dict->GetIsolate(),
|
| + dict->Add(*name, *value, details),
|
| + NameDictionary);
|
| }
|
|
|
|
|
| -MaybeObject* GlobalObject::EnsurePropertyCell(Name* name) {
|
| - ASSERT(!HasFastProperties());
|
| - int entry = property_dictionary()->FindEntry(name);
|
| +Handle<PropertyCell> GlobalObject::EnsurePropertyCell(
|
| + Handle<GlobalObject> global,
|
| + Handle<Name> name) {
|
| + ASSERT(!global->HasFastProperties());
|
| + int entry = global->property_dictionary()->FindEntry(*name);
|
| if (entry == NameDictionary::kNotFound) {
|
| - Heap* heap = GetHeap();
|
| - Object* cell;
|
| - { MaybeObject* maybe_cell =
|
| - heap->AllocatePropertyCell(heap->the_hole_value());
|
| - if (!maybe_cell->ToObject(&cell)) return maybe_cell;
|
| - }
|
| + Isolate* isolate = global->GetIsolate();
|
| + Handle<PropertyCell> cell = isolate->factory()->NewPropertyCell(
|
| + isolate->factory()->the_hole_value());
|
| PropertyDetails details(NONE, NORMAL, 0);
|
| details = details.AsDeleted();
|
| - Object* dictionary;
|
| - { MaybeObject* maybe_dictionary =
|
| - property_dictionary()->Add(name, cell, details);
|
| - if (!maybe_dictionary->ToObject(&dictionary)) return maybe_dictionary;
|
| - }
|
| - set_properties(NameDictionary::cast(dictionary));
|
| + Handle<NameDictionary> dictionary = NameDictionaryAdd(
|
| + handle(global->property_dictionary()), name, cell, details);
|
| + global->set_properties(*dictionary);
|
| return cell;
|
| } else {
|
| - Object* value = property_dictionary()->ValueAt(entry);
|
| + Object* value = global->property_dictionary()->ValueAt(entry);
|
| ASSERT(value->IsPropertyCell());
|
| - return value;
|
| + return handle(PropertyCell::cast(value));
|
| }
|
| }
|
|
|
|
|