Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index abb046725c8a0923e2ccd45aaf9826ebb9eb0453..0d4e2cb76fcbb956ba81f45ca6f5e5e0549b6551 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -766,10 +766,9 @@ class ElementsAccessorBase : public ElementsAccessor { |
} |
virtual MaybeHandle<FixedArray> AddElementsToFixedArray( |
- Handle<Object> receiver, |
- Handle<JSObject> holder, |
- Handle<FixedArray> to, |
- Handle<FixedArrayBase> from) FINAL OVERRIDE { |
+ Handle<Object> receiver, Handle<JSObject> holder, Handle<FixedArray> to, |
+ Handle<FixedArrayBase> from, |
+ FixedArray::KeyFilter filter) FINAL OVERRIDE { |
int len0 = to->length(); |
#ifdef ENABLE_SLOW_DCHECKS |
if (FLAG_enable_slow_asserts) { |
@@ -799,6 +798,9 @@ class ElementsAccessorBase : public ElementsAccessor { |
FixedArray); |
DCHECK(!value->IsTheHole()); |
+ if (filter == FixedArray::NON_SYMBOL_KEYS && value->IsSymbol()) { |
+ continue; |
+ } |
if (!HasKey(to, value)) { |
extra++; |
} |
@@ -832,6 +834,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++; |