Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/array-iterator.js

Issue 1309243003: ES6: Array.prototype.slice and friends should use ToLength instead of ToUint32 (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 })
OLDNEW
« no previous file with comments | « src/array.js ('k') | src/bootstrapper.cc » ('j') | src/debug/liveedit.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698