| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 6900029665ac476b0523b4d767c0490a540dadf9..82ba2b4a092b07a3b1fcb57d9364495b0be67e47 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -5180,9 +5180,8 @@ Handle<ObjectHashTable> JSObject::GetOrCreateHiddenPropertiesHashtable(
|
| return Handle<ObjectHashTable>::cast(inline_value);
|
| }
|
|
|
| - Handle<ObjectHashTable> hashtable = isolate->factory()->NewObjectHashTable(
|
| - kInitialCapacity,
|
| - USE_CUSTOM_MINIMUM_CAPACITY);
|
| + Handle<ObjectHashTable> hashtable = ObjectHashTable::New(
|
| + isolate, kInitialCapacity, USE_CUSTOM_MINIMUM_CAPACITY);
|
|
|
| if (inline_value->IsSmi()) {
|
| // We were storing the identity hash inline and now allocated an actual
|
| @@ -14589,11 +14588,12 @@ void HashTable<Derived, Shape, Key>::IterateElements(ObjectVisitor* v) {
|
|
|
|
|
| template<typename Derived, typename Shape, typename Key>
|
| -MaybeObject* HashTable<Derived, Shape, Key>::Allocate(
|
| - Heap* heap,
|
| +Handle<Derived> HashTable<Derived, Shape, Key>::New(
|
| + Isolate* isolate,
|
| int at_least_space_for,
|
| MinimumCapacity capacity_option,
|
| PretenureFlag pretenure) {
|
| + ASSERT(0 <= at_least_space_for);
|
| ASSERT(!capacity_option || IsPowerOf2(at_least_space_for));
|
| int capacity = (capacity_option == USE_CUSTOM_MINIMUM_CAPACITY)
|
| ? at_least_space_for
|
| @@ -14602,28 +14602,16 @@ MaybeObject* HashTable<Derived, Shape, Key>::Allocate(
|
| v8::internal::Heap::FatalProcessOutOfMemory("invalid table size", true);
|
| }
|
|
|
| - Object* obj;
|
| - { MaybeObject* maybe_obj =
|
| - heap-> AllocateHashTable(EntryToIndex(capacity), pretenure);
|
| - if (!maybe_obj->ToObject(&obj)) return maybe_obj;
|
| - }
|
| - HashTable::cast(obj)->SetNumberOfElements(0);
|
| - HashTable::cast(obj)->SetNumberOfDeletedElements(0);
|
| - HashTable::cast(obj)->SetCapacity(capacity);
|
| - return obj;
|
| -}
|
| -
|
| + Factory* factory = isolate->factory();
|
| + int length = EntryToIndex(capacity);
|
| + Handle<FixedArray> array = factory->NewFixedArray(length, pretenure);
|
| + array->set_map_no_write_barrier(*factory->hash_table_map());
|
| + Handle<Derived> table = Handle<Derived>::cast(array);
|
|
|
| -template<typename Derived, typename Shape, typename Key>
|
| -Handle<Derived> HashTable<Derived, Shape, Key>::New(
|
| - Isolate* isolate,
|
| - int at_least_space_for,
|
| - MinimumCapacity capacity_option,
|
| - PretenureFlag pretenure) {
|
| - CALL_HEAP_FUNCTION(
|
| - isolate,
|
| - Allocate(isolate->heap(), at_least_space_for, capacity_option, pretenure),
|
| - Derived);
|
| + table->SetNumberOfElements(0);
|
| + table->SetNumberOfDeletedElements(0);
|
| + table->SetCapacity(capacity);
|
| + return table;
|
| }
|
|
|
|
|
|
|