| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 47a61f627b817ca7d533aea305cfde7b90e4d110..6ce3724d45ae56cfe0bf7c223e3bbb2ba5de1923 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -14230,9 +14230,11 @@ template
|
| int Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| NumberOfEnumElements();
|
|
|
| -template
|
| -int HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| - FindEntry(uint32_t);
|
| +template bool Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape,
|
| + uint32_t>::HasComplexElements();
|
| +
|
| +template int HashTable<SeededNumberDictionary, SeededNumberDictionaryShape,
|
| + uint32_t>::FindEntry(uint32_t);
|
|
|
|
|
| Handle<Object> JSObject::PrepareSlowElementsForSort(
|
| @@ -15270,10 +15272,26 @@ int Dictionary<Derived, Shape, Key>::NumberOfEnumElements() {
|
| }
|
|
|
|
|
| -template<typename Derived, typename Shape, typename Key>
|
| +template <typename Derived, typename Shape, typename Key>
|
| +bool Dictionary<Derived, Shape, Key>::HasComplexElements() {
|
| + int capacity = DerivedHashTable::Capacity();
|
| + for (int i = 0; i < capacity; i++) {
|
| + Object* k = DerivedHashTable::KeyAt(i);
|
| + if (DerivedHashTable::IsKey(k) && !FilterKey(k, NONE)) {
|
| + PropertyDetails details = DetailsAt(i);
|
| + if (details.IsDeleted()) continue;
|
| + if (details.type() == CALLBACKS) return true;
|
| + PropertyAttributes attr = details.attributes();
|
| + if (attr & (READ_ONLY | DONT_DELETE)) return true;
|
| + }
|
| + }
|
| + return false;
|
| +}
|
| +
|
| +
|
| +template <typename Derived, typename Shape, typename Key>
|
| void Dictionary<Derived, Shape, Key>::CopyKeysTo(
|
| - FixedArray* storage,
|
| - PropertyAttributes filter,
|
| + FixedArray* storage, PropertyAttributes filter,
|
| typename Dictionary<Derived, Shape, Key>::SortMode sort_mode) {
|
| DCHECK(storage->length() >= NumberOfElementsFilterAttributes(filter));
|
| int capacity = DerivedHashTable::Capacity();
|
|
|