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

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

Issue 2614623003: Move all Symbol.species setup for builtin constructors to bootstrapper (Closed)
Patch Set: Rebased Created 3 years, 11 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
« no previous file with comments | « src/bootstrapper.cc ('k') | src/js/arraybuffer.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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(global, utils, extrasUtils) { 5 (function(global, utils, extrasUtils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
11 // ------------------------------------------------------------------- 11 // -------------------------------------------------------------------
12 // Imports 12 // Imports
13 13
14 var GetIterator; 14 var GetIterator;
15 var GetMethod; 15 var GetMethod;
16 var GlobalArray = global.Array; 16 var GlobalArray = global.Array;
17 var InternalArray = utils.InternalArray; 17 var InternalArray = utils.InternalArray;
18 var InternalPackedArray = utils.InternalPackedArray; 18 var InternalPackedArray = utils.InternalPackedArray;
19 var MaxSimple; 19 var MaxSimple;
20 var MinSimple; 20 var MinSimple;
21 var ObjectHasOwnProperty; 21 var ObjectHasOwnProperty;
22 var ObjectToString = utils.ImportNow("object_to_string"); 22 var ObjectToString = utils.ImportNow("object_to_string");
23 var iteratorSymbol = utils.ImportNow("iterator_symbol"); 23 var iteratorSymbol = utils.ImportNow("iterator_symbol");
24 var speciesSymbol = utils.ImportNow("species_symbol");
25 var unscopablesSymbol = utils.ImportNow("unscopables_symbol"); 24 var unscopablesSymbol = utils.ImportNow("unscopables_symbol");
26 25
27 utils.Import(function(from) { 26 utils.Import(function(from) {
28 GetIterator = from.GetIterator; 27 GetIterator = from.GetIterator;
29 GetMethod = from.GetMethod; 28 GetMethod = from.GetMethod;
30 MaxSimple = from.MaxSimple; 29 MaxSimple = from.MaxSimple;
31 MinSimple = from.MinSimple; 30 MinSimple = from.MinSimple;
32 ObjectHasOwnProperty = from.ObjectHasOwnProperty; 31 ObjectHasOwnProperty = from.ObjectHasOwnProperty;
33 }); 32 });
34 33
(...skipping 1448 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 var constructor = this; 1482 var constructor = this;
1484 // TODO: Implement IsConstructor (ES6 section 7.2.5) 1483 // TODO: Implement IsConstructor (ES6 section 7.2.5)
1485 var array = %IsConstructor(constructor) ? new constructor(length) : []; 1484 var array = %IsConstructor(constructor) ? new constructor(length) : [];
1486 for (var i = 0; i < length; i++) { 1485 for (var i = 0; i < length; i++) {
1487 %CreateDataProperty(array, i, args[i]); 1486 %CreateDataProperty(array, i, args[i]);
1488 } 1487 }
1489 array.length = length; 1488 array.length = length;
1490 return array; 1489 return array;
1491 } 1490 }
1492 1491
1493
1494 function ArraySpecies() {
1495 return this;
1496 }
1497
1498
1499 // ------------------------------------------------------------------- 1492 // -------------------------------------------------------------------
1500 1493
1501 // Set up non-enumerable constructor property on the Array.prototype 1494 // Set up non-enumerable constructor property on the Array.prototype
1502 // object. 1495 // object.
1503 %AddNamedProperty(GlobalArray.prototype, "constructor", GlobalArray, 1496 %AddNamedProperty(GlobalArray.prototype, "constructor", GlobalArray,
1504 DONT_ENUM); 1497 DONT_ENUM);
1505 1498
1506 // Set up unscopable properties on the Array.prototype object. 1499 // Set up unscopable properties on the Array.prototype object.
1507 var unscopables = { 1500 var unscopables = {
1508 __proto__: null, 1501 __proto__: null,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1571 "findIndex", getFunction("findIndex", ArrayFindIndex, 1), 1564 "findIndex", getFunction("findIndex", ArrayFindIndex, 1),
1572 "fill", getFunction("fill", ArrayFill, 1), 1565 "fill", getFunction("fill", ArrayFill, 1),
1573 "includes", getFunction("includes", null, 1), 1566 "includes", getFunction("includes", null, 1),
1574 "keys", getFunction("keys", null, 0), 1567 "keys", getFunction("keys", null, 0),
1575 "entries", getFunction("entries", null, 0), 1568 "entries", getFunction("entries", null, 0),
1576 iteratorSymbol, ArrayValues 1569 iteratorSymbol, ArrayValues
1577 ]); 1570 ]);
1578 1571
1579 %FunctionSetName(ArrayValues, "values"); 1572 %FunctionSetName(ArrayValues, "values");
1580 1573
1581 utils.InstallGetter(GlobalArray, speciesSymbol, ArraySpecies);
1582
1583 %FinishArrayPrototypeSetup(GlobalArray.prototype); 1574 %FinishArrayPrototypeSetup(GlobalArray.prototype);
1584 1575
1585 // The internal Array prototype doesn't need to be fancy, since it's never 1576 // The internal Array prototype doesn't need to be fancy, since it's never
1586 // exposed to user code. 1577 // exposed to user code.
1587 // Adding only the functions that are actually used. 1578 // Adding only the functions that are actually used.
1588 utils.SetUpLockedPrototype(InternalArray, GlobalArray(), [ 1579 utils.SetUpLockedPrototype(InternalArray, GlobalArray(), [
1589 "indexOf", getFunction("indexOf", null), 1580 "indexOf", getFunction("indexOf", null),
1590 "join", getFunction("join", ArrayJoin), 1581 "join", getFunction("join", ArrayJoin),
1591 "pop", getFunction("pop", ArrayPop), 1582 "pop", getFunction("pop", ArrayPop),
1592 "push", getFunction("push", ArrayPush), 1583 "push", getFunction("push", ArrayPush),
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 "array_pop", ArrayPop, 1634 "array_pop", ArrayPop,
1644 "array_push", ArrayPush, 1635 "array_push", ArrayPush,
1645 "array_shift", ArrayShift, 1636 "array_shift", ArrayShift,
1646 "array_splice", ArraySplice, 1637 "array_splice", ArraySplice,
1647 "array_slice", ArraySlice, 1638 "array_slice", ArraySlice,
1648 "array_unshift", ArrayUnshift, 1639 "array_unshift", ArrayUnshift,
1649 "array_values_iterator", ArrayValues, 1640 "array_values_iterator", ArrayValues,
1650 ]); 1641 ]);
1651 1642
1652 }); 1643 });
OLDNEW
« no previous file with comments | « src/bootstrapper.cc ('k') | src/js/arraybuffer.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698