| // 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; |
| |
| // ------------------------------------------------------------------- |
| |
| function SpreadArguments() { |
| var count = arguments.length; |
| 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 %make_type_error(kNotIterable, collection); |
| } |
| |
| var args = new InternalArray(); |
| for (var value of collection) { |
| args.push(value); |
| } |
| return args; |
| } |
| |
| // ---------------------------------------------------------------------------- |
| // Exports |
| |
| %InstallToContext([ |
| "spread_arguments", SpreadArguments, |
| "spread_iterable", SpreadIterable, |
| ]); |
| |
| }) |