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 (function() { |
| 6 |
5 'use strict'; | 7 'use strict'; |
6 | 8 |
7 // This file relies on the fact that the following declaration has been made | 9 %CheckIsBootstrapping(); |
8 // in runtime.js: | 10 |
9 // var $Array = global.Array; | 11 var GlobalArray = global.Array; |
| 12 var GlobalSymbol = global.Symbol; |
10 | 13 |
11 // ------------------------------------------------------------------- | 14 // ------------------------------------------------------------------- |
12 | 15 |
13 // ES6 draft 07-15-13, section 15.4.3.23 | 16 // ES6 draft 07-15-13, section 15.4.3.23 |
14 function ArrayFind(predicate /* thisArg */) { // length == 1 | 17 function ArrayFind(predicate /* thisArg */) { // length == 1 |
15 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find"); | 18 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.find"); |
16 | 19 |
17 var array = ToObject(this); | 20 var array = ToObject(this); |
18 var length = ToInteger(array.length); | 21 var length = ToInteger(array.length); |
19 | 22 |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 var array = %IsConstructor(constructor) ? new constructor(length) : []; | 204 var array = %IsConstructor(constructor) ? new constructor(length) : []; |
202 for (var i = 0; i < length; i++) { | 205 for (var i = 0; i < length; i++) { |
203 %AddElement(array, i, %_Arguments(i), NONE); | 206 %AddElement(array, i, %_Arguments(i), NONE); |
204 } | 207 } |
205 array.length = length; | 208 array.length = length; |
206 return array; | 209 return array; |
207 } | 210 } |
208 | 211 |
209 // ------------------------------------------------------------------- | 212 // ------------------------------------------------------------------- |
210 | 213 |
211 function HarmonyArrayExtendSymbolPrototype() { | 214 InstallConstants(GlobalSymbol, [ |
212 %CheckIsBootstrapping(); | 215 // TODO(dslomov, caitp): Move to symbol.js when shipping |
| 216 "isConcatSpreadable", symbolIsConcatSpreadable |
| 217 ]); |
213 | 218 |
214 InstallConstants(global.Symbol, [ | 219 %FunctionSetLength(ArrayFrom, 1); |
215 // TODO(dslomov, caitp): Move to symbol.js when shipping | |
216 "isConcatSpreadable", symbolIsConcatSpreadable | |
217 ]); | |
218 } | |
219 | 220 |
220 HarmonyArrayExtendSymbolPrototype(); | 221 // Set up non-enumerable functions on the Array object. |
| 222 InstallFunctions(GlobalArray, DONT_ENUM, [ |
| 223 "from", ArrayFrom, |
| 224 "of", ArrayOf |
| 225 ]); |
221 | 226 |
222 function HarmonyArrayExtendArrayPrototype() { | 227 // Set up the non-enumerable functions on the Array prototype object. |
223 %CheckIsBootstrapping(); | 228 InstallFunctions(GlobalArray.prototype, DONT_ENUM, [ |
| 229 "find", ArrayFind, |
| 230 "findIndex", ArrayFindIndex, |
| 231 "fill", ArrayFill |
| 232 ]); |
224 | 233 |
225 %FunctionSetLength(ArrayFrom, 1); | 234 })(); |
226 | |
227 // Set up non-enumerable functions on the Array object. | |
228 InstallFunctions($Array, DONT_ENUM, [ | |
229 "from", ArrayFrom, | |
230 "of", ArrayOf | |
231 ]); | |
232 | |
233 // Set up the non-enumerable functions on the Array prototype object. | |
234 InstallFunctions($Array.prototype, DONT_ENUM, [ | |
235 "find", ArrayFind, | |
236 "findIndex", ArrayFindIndex, | |
237 "fill", ArrayFill | |
238 ]); | |
239 } | |
240 | |
241 HarmonyArrayExtendArrayPrototype(); | |
OLD | NEW |