OLD | NEW |
| (Empty) |
1 // Copyright 2015 the V8 project authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 (function(global, utils) { | |
6 | |
7 'use strict'; | |
8 | |
9 // ------------------------------------------------------------------- | |
10 // Imports | |
11 var InternalArray = utils.InternalArray; | |
12 var MakeTypeError; | |
13 | |
14 utils.Import(function(from) { | |
15 MakeTypeError = from.MakeTypeError; | |
16 }); | |
17 | |
18 // ------------------------------------------------------------------- | |
19 | |
20 function SpreadArguments() { | |
21 var count = %_ArgumentsLength(); | |
22 var args = new InternalArray(); | |
23 | |
24 for (var i = 0; i < count; ++i) { | |
25 var array = %_Arguments(i); | |
26 var length = array.length; | |
27 for (var j = 0; j < length; ++j) { | |
28 args.push(array[j]); | |
29 } | |
30 } | |
31 | |
32 return args; | |
33 } | |
34 | |
35 | |
36 function SpreadIterable(collection) { | |
37 if (IS_NULL_OR_UNDEFINED(collection)) { | |
38 throw MakeTypeError(kNotIterable, collection); | |
39 } | |
40 | |
41 var args = new InternalArray(); | |
42 for (var value of collection) { | |
43 args.push(value); | |
44 } | |
45 return args; | |
46 } | |
47 | |
48 // ---------------------------------------------------------------------------- | |
49 // Exports | |
50 | |
51 %InstallToContext([ | |
52 "spread_arguments", SpreadArguments, | |
53 "spread_iterable", SpreadIterable, | |
54 ]); | |
55 | |
56 }) | |
OLD | NEW |