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

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

Issue 2776433003: [builtins] Implement Array.prototype.reduceRight in the CSA (Closed)
Patch Set: Add back accidental removals Created 3 years, 9 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/debug/debug-evaluate.cc ('k') | src/js/typedarray.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
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 return -1; 1099 return -1;
1100 } 1100 }
1101 for (var i = max; i >= min; i--) { 1101 for (var i = max; i >= min; i--) {
1102 if (IS_UNDEFINED(array[i]) && i in array) { 1102 if (IS_UNDEFINED(array[i]) && i in array) {
1103 return i; 1103 return i;
1104 } 1104 }
1105 } 1105 }
1106 return -1; 1106 return -1;
1107 } 1107 }
1108 1108
1109 function InnerArrayReduceRight(callback, current, array, length,
1110 argumentsLength) {
1111 if (!IS_CALLABLE(callback)) {
1112 throw %make_type_error(kCalledNonCallable, callback);
1113 }
1114
1115 var i = length - 1;
1116 find_initial: if (argumentsLength < 2) {
1117 for (; i >= 0; i--) {
1118 if (i in array) {
1119 current = array[i--];
1120 break find_initial;
1121 }
1122 }
1123 throw %make_type_error(kReduceNoInitial);
1124 }
1125
1126 for (; i >= 0; i--) {
1127 if (i in array) {
1128 var element = array[i];
1129 current = callback(current, element, i, array);
1130 }
1131 }
1132 return current;
1133 }
1134
1135
1136 function ArrayReduceRight(callback, current) {
1137 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.reduceRight");
1138
1139 // Pull out the length so that side effects are visible before the
1140 // callback function is checked.
1141 var array = TO_OBJECT(this);
1142 var length = TO_LENGTH(array.length);
1143 return InnerArrayReduceRight(callback, current, array, length,
1144 arguments.length);
1145 }
1146
1147
1148 // ES#sec-array.prototype.copywithin 1109 // ES#sec-array.prototype.copywithin
1149 // (Array.prototype.copyWithin ( target, start [ , end ] ) 1110 // (Array.prototype.copyWithin ( target, start [ , end ] )
1150 function ArrayCopyWithin(target, start, end) { 1111 function ArrayCopyWithin(target, start, end) {
1151 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin"); 1112 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.copyWithin");
1152 1113
1153 var array = TO_OBJECT(this); 1114 var array = TO_OBJECT(this);
1154 var length = TO_LENGTH(array.length); 1115 var length = TO_LENGTH(array.length);
1155 1116
1156 target = TO_INTEGER(target); 1117 target = TO_INTEGER(target);
1157 var to; 1118 var to;
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
1418 "reverse", getFunction("reverse", ArrayReverse), 1379 "reverse", getFunction("reverse", ArrayReverse),
1419 "shift", getFunction("shift", ArrayShift), 1380 "shift", getFunction("shift", ArrayShift),
1420 "unshift", getFunction("unshift", ArrayUnshift, 1), 1381 "unshift", getFunction("unshift", ArrayUnshift, 1),
1421 "slice", getFunction("slice", ArraySlice, 2), 1382 "slice", getFunction("slice", ArraySlice, 2),
1422 "splice", getFunction("splice", ArraySplice, 2), 1383 "splice", getFunction("splice", ArraySplice, 2),
1423 "sort", getFunction("sort", ArraySort), 1384 "sort", getFunction("sort", ArraySort),
1424 "filter", getFunction("filter", ArrayFilter, 1), 1385 "filter", getFunction("filter", ArrayFilter, 1),
1425 "map", getFunction("map", ArrayMap, 1), 1386 "map", getFunction("map", ArrayMap, 1),
1426 "indexOf", getFunction("indexOf", null, 1), 1387 "indexOf", getFunction("indexOf", null, 1),
1427 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1), 1388 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1),
1428 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1),
1429 "copyWithin", getFunction("copyWithin", ArrayCopyWithin, 2), 1389 "copyWithin", getFunction("copyWithin", ArrayCopyWithin, 2),
1430 "find", getFunction("find", ArrayFind, 1), 1390 "find", getFunction("find", ArrayFind, 1),
1431 "findIndex", getFunction("findIndex", ArrayFindIndex, 1), 1391 "findIndex", getFunction("findIndex", ArrayFindIndex, 1),
1432 "fill", getFunction("fill", ArrayFill, 1), 1392 "fill", getFunction("fill", ArrayFill, 1),
1433 "includes", getFunction("includes", null, 1), 1393 "includes", getFunction("includes", null, 1),
1434 "entries", IteratorFunctions.entries, 1394 "entries", IteratorFunctions.entries,
1435 "keys", IteratorFunctions.keys, 1395 "keys", IteratorFunctions.keys,
1436 iteratorSymbol, IteratorFunctions.values 1396 iteratorSymbol, IteratorFunctions.values
1437 ]); 1397 ]);
1438 1398
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1477 utils.Export(function(to) { 1437 utils.Export(function(to) {
1478 to.ArrayFrom = ArrayFrom; 1438 to.ArrayFrom = ArrayFrom;
1479 to.ArrayJoin = ArrayJoin; 1439 to.ArrayJoin = ArrayJoin;
1480 to.ArrayPush = ArrayPush; 1440 to.ArrayPush = ArrayPush;
1481 to.ArrayToString = ArrayToString; 1441 to.ArrayToString = ArrayToString;
1482 to.ArrayValues = IteratorFunctions.values, 1442 to.ArrayValues = IteratorFunctions.values,
1483 to.InnerArrayFilter = InnerArrayFilter; 1443 to.InnerArrayFilter = InnerArrayFilter;
1484 to.InnerArrayFind = InnerArrayFind; 1444 to.InnerArrayFind = InnerArrayFind;
1485 to.InnerArrayFindIndex = InnerArrayFindIndex; 1445 to.InnerArrayFindIndex = InnerArrayFindIndex;
1486 to.InnerArrayJoin = InnerArrayJoin; 1446 to.InnerArrayJoin = InnerArrayJoin;
1487 to.InnerArrayReduceRight = InnerArrayReduceRight;
1488 to.InnerArraySort = InnerArraySort; 1447 to.InnerArraySort = InnerArraySort;
1489 to.InnerArrayToLocaleString = InnerArrayToLocaleString; 1448 to.InnerArrayToLocaleString = InnerArrayToLocaleString;
1490 to.PackedArrayReverse = PackedArrayReverse; 1449 to.PackedArrayReverse = PackedArrayReverse;
1491 }); 1450 });
1492 1451
1493 %InstallToContext([ 1452 %InstallToContext([
1494 "array_entries_iterator", IteratorFunctions.entries, 1453 "array_entries_iterator", IteratorFunctions.entries,
1495 "array_keys_iterator", IteratorFunctions.keys, 1454 "array_keys_iterator", IteratorFunctions.keys,
1496 "array_pop", ArrayPop, 1455 "array_pop", ArrayPop,
1497 "array_push", ArrayPush, 1456 "array_push", ArrayPush,
1498 "array_shift", ArrayShift, 1457 "array_shift", ArrayShift,
1499 "array_splice", ArraySplice, 1458 "array_splice", ArraySplice,
1500 "array_slice", ArraySlice, 1459 "array_slice", ArraySlice,
1501 "array_unshift", ArrayUnshift, 1460 "array_unshift", ArrayUnshift,
1502 "array_values_iterator", IteratorFunctions.values, 1461 "array_values_iterator", IteratorFunctions.values,
1503 ]); 1462 ]);
1504 1463
1505 }); 1464 });
OLDNEW
« no previous file with comments | « src/debug/debug-evaluate.cc ('k') | src/js/typedarray.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698