Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 76b9b03bf62d51a0ff4a59127f809f8f441fef84..c28a34173d81cbd7304fe5041f418d4aa960263a 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -751,7 +751,8 @@ class ElementsAccessorBase : public ElementsAccessor { |
Handle<Object> receiver, |
Handle<JSObject> holder, |
Handle<FixedArray> to, |
- Handle<FixedArrayBase> from) V8_FINAL V8_OVERRIDE { |
+ Handle<FixedArrayBase> from, |
+ FixedArray::KeyFilter filter) V8_FINAL V8_OVERRIDE { |
int len0 = to->length(); |
#ifdef ENABLE_SLOW_DCHECKS |
if (FLAG_enable_slow_asserts) { |
@@ -781,6 +782,11 @@ class ElementsAccessorBase : public ElementsAccessor { |
FixedArray); |
DCHECK(!value->IsTheHole()); |
+ |
+ if (filter == FixedArray::NON_SYMBOL_KEYS && value->IsSymbol()) { |
+ continue; |
+ } |
+ |
if (!HasKey(to, value)) { |
extra++; |
} |
@@ -814,6 +820,9 @@ class ElementsAccessorBase : public ElementsAccessor { |
isolate, value, |
ElementsAccessorSubclass::GetImpl(receiver, holder, key, from), |
FixedArray); |
+ if (filter == FixedArray::NON_SYMBOL_KEYS && value->IsSymbol()) { |
+ continue; |
+ } |
if (!value->IsTheHole() && !HasKey(to, value)) { |
result->set(len0 + index, *value); |
index++; |