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,
+]);
+
+})