Upgrade V8 to version 4.9.385.28
https://chromium.googlesource.com/v8/v8/+/4.9.385.28
FPIIM-449
Change-Id: I4b2e74289d4bf3667f2f3dc8aa2e541f63e26eb4
diff --git a/src/js/spread.js b/src/js/spread.js
new file mode 100644
index 0000000..235c91a
--- /dev/null
+++ b/src/js/spread.js
@@ -0,0 +1,56 @@
+// Copyright 2015 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+(function(global, utils) {
+
+'use strict';
+
+// -------------------------------------------------------------------
+// Imports
+var InternalArray = utils.InternalArray;
+var MakeTypeError;
+
+utils.Import(function(from) {
+ MakeTypeError = from.MakeTypeError;
+});
+
+// -------------------------------------------------------------------
+
+function SpreadArguments() {
+ var count = %_ArgumentsLength();
+ var args = new InternalArray();
+
+ for (var i = 0; i < count; ++i) {
+ var array = %_Arguments(i);
+ var length = array.length;
+ for (var j = 0; j < length; ++j) {
+ args.push(array[j]);
+ }
+ }
+
+ return args;
+}
+
+
+function SpreadIterable(collection) {
+ if (IS_NULL_OR_UNDEFINED(collection)) {
+ throw MakeTypeError(kNotIterable, collection);
+ }
+
+ var args = new InternalArray();
+ for (var value of collection) {
+ args.push(value);
+ }
+ return args;
+}
+
+// ----------------------------------------------------------------------------
+// Exports
+
+%InstallToContext([
+ "spread_arguments", SpreadArguments,
+ "spread_iterable", SpreadIterable,
+]);
+
+})