Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 8323c8950f890e373e2e385631782f41daf9460a..5280256fd5e8f7d819ab3962b6b120426d5765fb 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -870,23 +870,19 @@ class ElementsAccessorBase : public ElementsAccessor { |
virtual void AddElementsToKeyAccumulator(Handle<JSObject> receiver, |
KeyAccumulator* accumulator, |
- KeyFilter filter) final { |
+ AddKeyConversion convert) final { |
Handle<FixedArrayBase> from(receiver->elements()); |
uint32_t add_length = |
ElementsAccessorSubclass::GetCapacityImpl(*receiver, *from); |
if (add_length == 0) return; |
- accumulator->PrepareForComparisons(add_length); |
- int prev_key_count = accumulator->GetLength(); |
+ |
for (uint32_t i = 0; i < add_length; i++) { |
if (!ElementsAccessorSubclass::HasEntryImpl(*from, i)) continue; |
Handle<Object> value = ElementsAccessorSubclass::GetImpl(from, i); |
DCHECK(!value->IsTheHole()); |
DCHECK(!value->IsAccessorPair()); |
DCHECK(!value->IsExecutableAccessorInfo()); |
- if (filter == SKIP_SYMBOLS && value->IsSymbol()) { |
- continue; |
- } |
- accumulator->AddKey(value, prev_key_count); |
+ accumulator->AddKey(value, convert); |
} |
} |
@@ -895,7 +891,8 @@ class ElementsAccessorBase : public ElementsAccessor { |
return backing_store->length(); |
} |
- uint32_t GetCapacity(JSObject* holder, FixedArrayBase* backing_store) final { |
+ virtual uint32_t GetCapacity(JSObject* holder, |
+ FixedArrayBase* backing_store) final { |
return ElementsAccessorSubclass::GetCapacityImpl(holder, backing_store); |
} |