Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 5c10f54aefb793f895b45f64597109e6fb4e9dda..0de3ac7ae3ee2a42fd37076513cb5449703730bf 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -14805,9 +14805,10 @@ Handle<Derived> HashTable<Derived, Shape, Key>::EnsureCapacity( |
Key key, |
PretenureFlag pretenure) { |
Isolate* isolate = table->GetIsolate(); |
- CALL_HEAP_FUNCTION(isolate, |
- table->EnsureCapacity(n, key, pretenure), |
- Derived); |
+ CALL_HEAP_FUNCTION( |
+ isolate, |
+ static_cast<HashTable*>(*table)->EnsureCapacity(n, key, pretenure), |
+ Derived); |
} |
@@ -14977,9 +14978,9 @@ template Handle<NameDictionary> |
Dictionary<NameDictionary, NameDictionaryShape, Name*>::Add( |
Handle<NameDictionary>, Name*, Handle<Object>, PropertyDetails); |
-template MaybeObject* |
+template void |
Dictionary<NameDictionary, NameDictionaryShape, Name*>:: |
- GenerateNewEnumerationIndices(); |
+ GenerateNewEnumerationIndices(Handle<NameDictionary>); |
template int |
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>:: |
@@ -14999,17 +15000,17 @@ Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>:: |
Handle<Object>, |
PropertyDetails); |
-template MaybeObject* |
+template Handle<SeededNumberDictionary> |
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>:: |
- EnsureCapacity(int, uint32_t); |
+ EnsureCapacity(Handle<SeededNumberDictionary>, int, uint32_t); |
-template MaybeObject* |
+template Handle<UnseededNumberDictionary> |
Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>:: |
- EnsureCapacity(int, uint32_t); |
+ EnsureCapacity(Handle<UnseededNumberDictionary>, int, uint32_t); |
-template MaybeObject* |
+template Handle<NameDictionary> |
Dictionary<NameDictionary, NameDictionaryShape, Name*>:: |
- EnsureCapacity(int, Name*); |
+ EnsureCapacity(Handle<NameDictionary>, int, Name*); |
template MaybeObject* |
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>:: |
@@ -15812,46 +15813,33 @@ Handle<Derived> Dictionary<Derived, Shape, Key>::New( |
} |
- |
-void NameDictionary::DoGenerateNewEnumerationIndices( |
- Handle<NameDictionary> dictionary) { |
- CALL_HEAP_FUNCTION_VOID(dictionary->GetIsolate(), |
- dictionary->GenerateNewEnumerationIndices()); |
-} |
- |
template<typename Derived, typename Shape, typename Key> |
-MaybeObject* Dictionary<Derived, Shape, Key>::GenerateNewEnumerationIndices() { |
- Heap* heap = Dictionary::GetHeap(); |
- int length = DerivedHashTable::NumberOfElements(); |
+void Dictionary<Derived, Shape, Key>::GenerateNewEnumerationIndices( |
+ Handle<Derived> dictionary) { |
+ Factory* factory = dictionary->GetIsolate()->factory(); |
+ int length = dictionary->NumberOfElements(); |
// Allocate and initialize iteration order array. |
- Object* obj; |
- { MaybeObject* maybe_obj = heap->AllocateFixedArray(length); |
- if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
- } |
- FixedArray* iteration_order = FixedArray::cast(obj); |
+ Handle<FixedArray> iteration_order = factory->NewFixedArray(length); |
for (int i = 0; i < length; i++) { |
iteration_order->set(i, Smi::FromInt(i)); |
} |
// Allocate array with enumeration order. |
- { MaybeObject* maybe_obj = heap->AllocateFixedArray(length); |
- if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
- } |
- FixedArray* enumeration_order = FixedArray::cast(obj); |
+ Handle<FixedArray> enumeration_order = factory->NewFixedArray(length); |
// Fill the enumeration order array with property details. |
- int capacity = DerivedHashTable::Capacity(); |
+ int capacity = dictionary->Capacity(); |
int pos = 0; |
for (int i = 0; i < capacity; i++) { |
- if (Dictionary::IsKey(Dictionary::KeyAt(i))) { |
- int index = DetailsAt(i).dictionary_index(); |
+ if (dictionary->IsKey(dictionary->KeyAt(i))) { |
+ int index = dictionary->DetailsAt(i).dictionary_index(); |
enumeration_order->set(pos++, Smi::FromInt(index)); |
} |
} |
// Sort the arrays wrt. enumeration order. |
- iteration_order->SortPairs(enumeration_order, enumeration_order->length()); |
+ iteration_order->SortPairs(*enumeration_order, enumeration_order->length()); |
// Overwrite the enumeration_order with the enumeration indices. |
for (int i = 0; i < length; i++) { |
@@ -15861,46 +15849,33 @@ MaybeObject* Dictionary<Derived, Shape, Key>::GenerateNewEnumerationIndices() { |
} |
// Update the dictionary with new indices. |
- capacity = DerivedHashTable::Capacity(); |
+ capacity = dictionary->Capacity(); |
pos = 0; |
for (int i = 0; i < capacity; i++) { |
- if (Dictionary::IsKey(Dictionary::KeyAt(i))) { |
+ if (dictionary->IsKey(dictionary->KeyAt(i))) { |
int enum_index = Smi::cast(enumeration_order->get(pos++))->value(); |
- PropertyDetails details = DetailsAt(i); |
+ PropertyDetails details = dictionary->DetailsAt(i); |
PropertyDetails new_details = PropertyDetails( |
details.attributes(), details.type(), enum_index); |
- DetailsAtPut(i, new_details); |
+ dictionary->DetailsAtPut(i, new_details); |
} |
} |
// Set the next enumeration index. |
- SetNextEnumerationIndex(PropertyDetails::kInitialIndex+length); |
- return this; |
+ dictionary->SetNextEnumerationIndex(PropertyDetails::kInitialIndex+length); |
} |
+ |
template<typename Derived, typename Shape, typename Key> |
-MaybeObject* Dictionary<Derived, Shape, Key>::EnsureCapacity(int n, Key key) { |
+Handle<Derived> Dictionary<Derived, Shape, Key>::EnsureCapacity( |
+ Handle<Derived> dictionary, int n, Key key) { |
// Check whether there are enough enumeration indices to add n elements. |
if (Shape::kIsEnumerable && |
- !PropertyDetails::IsValidIndex(NextEnumerationIndex() + n)) { |
+ !PropertyDetails::IsValidIndex(dictionary->NextEnumerationIndex() + n)) { |
// If not, we generate new indices for the properties. |
- Object* result; |
- { MaybeObject* maybe_result = GenerateNewEnumerationIndices(); |
- if (!maybe_result->ToObject(&result)) return maybe_result; |
- } |
+ GenerateNewEnumerationIndices(dictionary); |
} |
- return DerivedHashTable::EnsureCapacity(n, key); |
-} |
- |
- |
- |
-template<typename Derived, typename Shape, typename Key> |
-Handle<Derived> Dictionary<Derived, Shape, Key>::EnsureCapacity( |
- Handle<Derived> obj, int n, Key key) { |
- Isolate* isolate = obj->GetIsolate(); |
- CALL_HEAP_FUNCTION(isolate, |
- obj->EnsureCapacity(n, key), |
- Derived); |
+ return DerivedHashTable::EnsureCapacity(dictionary, n, key); |
} |