Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 85eb3f266ecdb135e0ac8081d2b0d08bdd330477..917a31d0b5c85f3a1d493f820ccea2e0b6c3780f 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -1946,5 +1946,23 @@ void ElementsAccessor::TearDown() { |
ElementsAccessor** ElementsAccessor::elements_accessors_ = NULL; |
+ |
+ |
+bool IsConcatSpreadable(Isolate* isolate, Handle<Object> obj) { |
+ HandleScope handle_scope(isolate); |
+ if (!obj->IsSpecObject()) return false; |
+ if (FLAG_harmony_concat_spreadable) { |
+ Handle<Symbol> key(isolate->factory()->is_concat_spreadable_symbol()); |
+ Handle<Object> value; |
+ MaybeHandle<Object> maybeValue = |
+ i::Runtime::GetObjectProperty(isolate, obj, key); |
+ if (maybeValue.ToHandle(&value)) { |
+ if (!value->IsUndefined()) { |
+ return value->BooleanValue(); |
+ } |
+ } |
+ } |
+ return obj->IsJSArray(); |
+} |
} // namespace internal |
} // namespace v8 |