OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var $arrayValues; | 5 var $arrayValues; |
6 | 6 |
7 (function(global, utils) { | 7 (function(global, utils) { |
8 | 8 |
9 "use strict"; | 9 "use strict"; |
10 | 10 |
11 %CheckIsBootstrapping(); | 11 %CheckIsBootstrapping(); |
12 | 12 |
13 // ----------------------------------------------------------------------- | 13 // ----------------------------------------------------------------------- |
14 // Imports | 14 // Imports |
15 | 15 |
16 var arrayIterationKindSymbol = | 16 var arrayIterationKindSymbol = |
17 utils.GetPrivateSymbol("array_iteration_kind_symbol"); | 17 utils.GetPrivateSymbol("array_iteration_kind_symbol"); |
18 var arrayIteratorNextIndexSymbol = | 18 var arrayIteratorNextIndexSymbol = |
19 utils.GetPrivateSymbol("array_iterator_next_symbol"); | 19 utils.GetPrivateSymbol("array_iterator_next_symbol"); |
20 var arrayIteratorObjectSymbol = | 20 var arrayIteratorObjectSymbol = |
21 utils.GetPrivateSymbol("array_iterator_object_symbol"); | 21 utils.GetPrivateSymbol("array_iterator_object_symbol"); |
22 var GlobalArray = global.Array; | 22 var GlobalArray = global.Array; |
| 23 var ToLengthFlagged; |
| 24 |
| 25 utils.Import(function(from) { |
| 26 ToLengthFlagged = from.ToLengthFlagged; |
| 27 }); |
| 28 |
23 | 29 |
24 macro TYPED_ARRAYS(FUNCTION) | 30 macro TYPED_ARRAYS(FUNCTION) |
25 FUNCTION(Uint8Array) | 31 FUNCTION(Uint8Array) |
26 FUNCTION(Int8Array) | 32 FUNCTION(Int8Array) |
27 FUNCTION(Uint16Array) | 33 FUNCTION(Uint16Array) |
28 FUNCTION(Int16Array) | 34 FUNCTION(Int16Array) |
29 FUNCTION(Uint32Array) | 35 FUNCTION(Uint32Array) |
30 FUNCTION(Int32Array) | 36 FUNCTION(Int32Array) |
31 FUNCTION(Float32Array) | 37 FUNCTION(Float32Array) |
32 FUNCTION(Float64Array) | 38 FUNCTION(Float64Array) |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 'Array Iterator.prototype.next', this); | 87 'Array Iterator.prototype.next', this); |
82 } | 88 } |
83 | 89 |
84 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); | 90 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); |
85 if (IS_UNDEFINED(array)) { | 91 if (IS_UNDEFINED(array)) { |
86 return CreateIteratorResultObject(UNDEFINED, true); | 92 return CreateIteratorResultObject(UNDEFINED, true); |
87 } | 93 } |
88 | 94 |
89 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol); | 95 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol); |
90 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol); | 96 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol); |
91 var length = TO_UINT32(array.length); | 97 var length = ToLengthFlagged(array.length); |
92 | 98 |
93 // "sparse" is never used. | 99 // "sparse" is never used. |
94 | 100 |
95 if (index >= length) { | 101 if (index >= length) { |
96 SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED); | 102 SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED); |
97 return CreateIteratorResultObject(UNDEFINED, true); | 103 return CreateIteratorResultObject(UNDEFINED, true); |
98 } | 104 } |
99 | 105 |
100 SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1); | 106 SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1); |
101 | 107 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 | 172 |
167 utils.Export(function(to) { | 173 utils.Export(function(to) { |
168 to.ArrayIteratorCreateResultObject = CreateIteratorResultObject; | 174 to.ArrayIteratorCreateResultObject = CreateIteratorResultObject; |
169 }); | 175 }); |
170 | 176 |
171 $arrayValues = ArrayValues; | 177 $arrayValues = ArrayValues; |
172 | 178 |
173 %InstallToContext(["array_values_iterator", ArrayValues]); | 179 %InstallToContext(["array_values_iterator", ArrayValues]); |
174 | 180 |
175 }) | 181 }) |
OLD | NEW |