Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 0ea8ffb28c9e8bbc64e4400b4d75344c8f5879f0..f4112d3640e7f0fafa3fc364c02d23e280c00a35 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -6384,21 +6384,21 @@ Handle<FixedArray> JSObject::GetEnumPropertyKeys(Handle<JSObject> object, |
return storage; |
} else if (object->IsGlobalObject()) { |
Handle<GlobalDictionary> dictionary(object->global_dictionary()); |
- int length = dictionary->NumberOfEnumElements(*object); |
+ int length = dictionary->NumberOfEnumElements(); |
if (length == 0) { |
return Handle<FixedArray>(isolate->heap()->empty_fixed_array()); |
} |
Handle<FixedArray> storage = isolate->factory()->NewFixedArray(length); |
- dictionary->CopyEnumKeysTo(*object, *storage); |
+ dictionary->CopyEnumKeysTo(*storage); |
return storage; |
} else { |
Handle<NameDictionary> dictionary(object->property_dictionary()); |
- int length = dictionary->NumberOfEnumElements(*object); |
+ int length = dictionary->NumberOfEnumElements(); |
if (length == 0) { |
return Handle<FixedArray>(isolate->heap()->empty_fixed_array()); |
} |
Handle<FixedArray> storage = isolate->factory()->NewFixedArray(length); |
- dictionary->CopyEnumKeysTo(*object, *storage); |
+ dictionary->CopyEnumKeysTo(*storage); |
return storage; |
} |
} |
@@ -14063,7 +14063,8 @@ void Dictionary<Derived, Shape, Key>::Print(std::ostream& os) { // NOLINT |
} else { |
os << Brief(k); |
} |
- os << ": " << Brief(ValueAt(i)) << " " << DetailsAt(i) << "\n"; |
+ os << ": " << Brief(this->ValueAt(i)) << " " << this->DetailsAt(i) |
+ << "\n"; |
} |
} |
} |
@@ -14079,7 +14080,7 @@ void Dictionary<Derived, Shape, Key>::CopyValuesTo(FixedArray* elements) { |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k)) { |
- elements->set(pos++, ValueAt(i), mode); |
+ elements->set(pos++, this->ValueAt(i), mode); |
} |
} |
DCHECK(pos == elements->length()); |
@@ -14254,10 +14255,9 @@ int JSObject::NumberOfOwnProperties(PropertyAttributes filter) { |
} |
return map->NumberOfDescribedProperties(OWN_DESCRIPTORS, filter); |
} else if (IsGlobalObject()) { |
- return global_dictionary()->NumberOfElementsFilterAttributes(this, filter); |
+ return global_dictionary()->NumberOfElementsFilterAttributes(filter); |
} else { |
- return property_dictionary()->NumberOfElementsFilterAttributes(this, |
- filter); |
+ return property_dictionary()->NumberOfElementsFilterAttributes(filter); |
} |
} |
@@ -14391,10 +14391,10 @@ void JSObject::GetOwnPropertyNames( |
} |
} |
} else if (IsGlobalObject()) { |
- global_dictionary()->CopyKeysTo(this, storage, index, filter, |
+ global_dictionary()->CopyKeysTo(storage, index, filter, |
GlobalDictionary::UNSORTED); |
} else { |
- property_dictionary()->CopyKeysTo(this, storage, index, filter, |
+ property_dictionary()->CopyKeysTo(storage, index, filter, |
NameDictionary::UNSORTED); |
} |
} |
@@ -14478,13 +14478,10 @@ int JSObject::GetOwnElementKeys(FixedArray* storage, |
case DICTIONARY_ELEMENTS: { |
if (storage != NULL) { |
- element_dictionary()->CopyKeysTo<DictionaryEntryType::kObjects>( |
- storage, filter, SeededNumberDictionary::SORTED); |
+ element_dictionary()->CopyKeysTo(storage, filter, |
+ SeededNumberDictionary::SORTED); |
} |
- counter += |
- element_dictionary() |
- ->NumberOfElementsFilterAttributes<DictionaryEntryType::kObjects>( |
- filter); |
+ counter += element_dictionary()->NumberOfElementsFilterAttributes(filter); |
break; |
} |
case SLOPPY_ARGUMENTS_ELEMENTS: { |
@@ -14497,11 +14494,10 @@ int JSObject::GetOwnElementKeys(FixedArray* storage, |
SeededNumberDictionary* dictionary = |
SeededNumberDictionary::cast(arguments); |
if (storage != NULL) { |
- dictionary->CopyKeysTo<DictionaryEntryType::kObjects>( |
- storage, filter, SeededNumberDictionary::UNSORTED); |
+ dictionary->CopyKeysTo(storage, filter, |
+ SeededNumberDictionary::UNSORTED); |
} |
- counter += dictionary->NumberOfElementsFilterAttributes< |
- DictionaryEntryType::kObjects>(filter); |
+ counter += dictionary->NumberOfElementsFilterAttributes(filter); |
for (int i = 0; i < mapped_length; ++i) { |
if (!parameter_map->get(i + 2)->IsTheHole()) { |
if (storage != NULL) storage->set(counter, Smi::FromInt(i)); |
@@ -15166,13 +15162,8 @@ template Handle<NameDictionary> |
Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >:: |
EnsureCapacity(Handle<NameDictionary>, int, Handle<Name>); |
-template bool |
-Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, |
- uint32_t>::HasComplexElements<DictionaryEntryType::kCells>(); |
- |
-template bool |
-Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, |
- uint32_t>::HasComplexElements<DictionaryEntryType::kObjects>(); |
+template bool Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, |
+ uint32_t>::HasComplexElements(); |
template int HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, |
uint32_t>::FindEntry(uint32_t); |
@@ -16252,22 +16243,7 @@ Handle<UnseededNumberDictionary> UnseededNumberDictionary::Set( |
} |
-template <DictionaryEntryType type, typename D> |
-static inline bool IsDeleted(D d, int i) { |
- switch (type) { |
- case DictionaryEntryType::kObjects: |
- return false; |
- case DictionaryEntryType::kCells: |
- DCHECK(d->ValueAt(i)->IsPropertyCell()); |
- return PropertyCell::cast(d->ValueAt(i))->value()->IsTheHole(); |
- } |
- UNREACHABLE(); |
- return false; |
-} |
- |
- |
template <typename Derived, typename Shape, typename Key> |
-template <DictionaryEntryType type> |
int Dictionary<Derived, Shape, Key>::NumberOfElementsFilterAttributes( |
PropertyAttributes filter) { |
int capacity = this->Capacity(); |
@@ -16275,8 +16251,8 @@ int Dictionary<Derived, Shape, Key>::NumberOfElementsFilterAttributes( |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k) && !FilterKey(k, filter)) { |
- if (IsDeleted<type>(this, i)) continue; |
- PropertyDetails details = DetailsAt(i); |
+ if (this->IsDeleted(i)) continue; |
+ PropertyDetails details = this->DetailsAt(i); |
PropertyAttributes attr = details.attributes(); |
if ((attr & filter) == 0) result++; |
} |
@@ -16286,14 +16262,13 @@ int Dictionary<Derived, Shape, Key>::NumberOfElementsFilterAttributes( |
template <typename Derived, typename Shape, typename Key> |
-template <DictionaryEntryType type> |
bool Dictionary<Derived, Shape, Key>::HasComplexElements() { |
int capacity = this->Capacity(); |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k) && !FilterKey(k, NONE)) { |
- if (IsDeleted<type>(this, i)) continue; |
- PropertyDetails details = DetailsAt(i); |
+ if (this->IsDeleted(i)) continue; |
+ PropertyDetails details = this->DetailsAt(i); |
if (details.type() == ACCESSOR_CONSTANT) return true; |
PropertyAttributes attr = details.attributes(); |
if (attr & (READ_ONLY | DONT_DELETE | DONT_ENUM)) return true; |
@@ -16304,18 +16279,17 @@ bool Dictionary<Derived, Shape, Key>::HasComplexElements() { |
template <typename Derived, typename Shape, typename Key> |
-template <DictionaryEntryType type> |
void Dictionary<Derived, Shape, Key>::CopyKeysTo( |
FixedArray* storage, PropertyAttributes filter, |
typename Dictionary<Derived, Shape, Key>::SortMode sort_mode) { |
- DCHECK(storage->length() >= NumberOfElementsFilterAttributes<type>(filter)); |
+ DCHECK(storage->length() >= NumberOfElementsFilterAttributes(filter)); |
int capacity = this->Capacity(); |
int index = 0; |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k) && !FilterKey(k, filter)) { |
- if (IsDeleted<type>(this, i)) continue; |
- PropertyDetails details = DetailsAt(i); |
+ if (this->IsDeleted(i)) continue; |
+ PropertyDetails details = this->DetailsAt(i); |
PropertyAttributes attr = details.attributes(); |
if ((attr & filter) == 0) storage->set(index++, k); |
} |
@@ -16340,7 +16314,6 @@ struct EnumIndexComparator { |
template <typename Derived, typename Shape, typename Key> |
-template <DictionaryEntryType type> |
void Dictionary<Derived, Shape, Key>::CopyEnumKeysTo(FixedArray* storage) { |
int length = storage->length(); |
int capacity = this->Capacity(); |
@@ -16348,12 +16321,12 @@ void Dictionary<Derived, Shape, Key>::CopyEnumKeysTo(FixedArray* storage) { |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k) && !k->IsSymbol()) { |
- PropertyDetails details = DetailsAt(i); |
- if (details.IsDontEnum() || IsDeleted<type>(this, i)) continue; |
- storage->set(properties, Smi::FromInt(i)); |
- properties++; |
- if (properties == length) break; |
- } |
+ PropertyDetails details = this->DetailsAt(i); |
+ if (details.IsDontEnum() || this->IsDeleted(i)) continue; |
+ storage->set(properties, Smi::FromInt(i)); |
+ properties++; |
+ if (properties == length) break; |
+ } |
} |
CHECK_EQ(length, properties); |
EnumIndexComparator<Derived> cmp(static_cast<Derived*>(this)); |
@@ -16367,17 +16340,16 @@ void Dictionary<Derived, Shape, Key>::CopyEnumKeysTo(FixedArray* storage) { |
template <typename Derived, typename Shape, typename Key> |
-template <DictionaryEntryType type> |
void Dictionary<Derived, Shape, Key>::CopyKeysTo( |
FixedArray* storage, int index, PropertyAttributes filter, |
typename Dictionary<Derived, Shape, Key>::SortMode sort_mode) { |
- DCHECK(storage->length() >= NumberOfElementsFilterAttributes<type>(filter)); |
+ DCHECK(storage->length() >= NumberOfElementsFilterAttributes(filter)); |
int capacity = this->Capacity(); |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k) && !FilterKey(k, filter)) { |
- if (IsDeleted<type>(this, i)) continue; |
- PropertyDetails details = DetailsAt(i); |
+ if (this->IsDeleted(i)) continue; |
+ PropertyDetails details = this->DetailsAt(i); |
PropertyAttributes attr = details.attributes(); |
if ((attr & filter) == 0) storage->set(index++, k); |
} |
@@ -16396,7 +16368,7 @@ Object* Dictionary<Derived, Shape, Key>::SlowReverseLookup(Object* value) { |
for (int i = 0; i < capacity; i++) { |
Object* k = this->KeyAt(i); |
if (this->IsKey(k)) { |
- Object* e = ValueAt(i); |
+ Object* e = this->ValueAt(i); |
// TODO(dcarney): this should be templatized. |
if (e->IsPropertyCell()) { |
e = PropertyCell::cast(e)->value(); |