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

Side by Side Diff: src/array.js

Issue 280243002: Avoid name clashes of builtins and runtime functions. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/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 "use strict"; 5 "use strict";
6 6
7 // This file relies on the fact that the following declarations have been made 7 // This file relies on the fact that the following declarations have been made
8 // in runtime.js: 8 // in runtime.js:
9 // var $Array = global.Array; 9 // var $Array = global.Array;
10 10
(...skipping 27 matching lines...) Expand all
38 keys.push(key); 38 keys.push(key);
39 } 39 }
40 } 40 }
41 } 41 }
42 %_CallFunction(keys, function(a, b) { return a - b; }, ArraySort); 42 %_CallFunction(keys, function(a, b) { return a - b; }, ArraySort);
43 } 43 }
44 return keys; 44 return keys;
45 } 45 }
46 46
47 47
48 function SparseJoinWithSeparator(array, len, convert, separator) { 48 function SparseJoinWithSeparatorJS(array, len, convert, separator) {
49 var keys = GetSortedArrayKeys(array, %GetArrayKeys(array, len)); 49 var keys = GetSortedArrayKeys(array, %GetArrayKeys(array, len));
50 var totalLength = 0; 50 var totalLength = 0;
51 var elements = new InternalArray(keys.length * 2); 51 var elements = new InternalArray(keys.length * 2);
52 var previousKey = -1; 52 var previousKey = -1;
53 for (var i = 0; i < keys.length; i++) { 53 for (var i = 0; i < keys.length; i++) {
54 var key = keys[i]; 54 var key = keys[i];
55 if (key != previousKey) { // keys may contain duplicates. 55 if (key != previousKey) { // keys may contain duplicates.
56 var e = array[key]; 56 var e = array[key];
57 if (!IS_STRING(e)) e = convert(e); 57 if (!IS_STRING(e)) e = convert(e);
58 elements[i * 2] = key; 58 elements[i * 2] = key;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 // visited arrays. 104 // visited arrays.
105 if (!%PushIfAbsent(visited_arrays, array)) return ''; 105 if (!%PushIfAbsent(visited_arrays, array)) return '';
106 } 106 }
107 107
108 // Attempt to convert the elements. 108 // Attempt to convert the elements.
109 try { 109 try {
110 if (UseSparseVariant(array, length, is_array)) { 110 if (UseSparseVariant(array, length, is_array)) {
111 if (separator.length == 0) { 111 if (separator.length == 0) {
112 return SparseJoin(array, length, convert); 112 return SparseJoin(array, length, convert);
113 } else { 113 } else {
114 return SparseJoinWithSeparator(array, length, convert, separator); 114 return SparseJoinWithSeparatorJS(array, length, convert, separator);
115 } 115 }
116 } 116 }
117 117
118 // Fast case for one-element arrays. 118 // Fast case for one-element arrays.
119 if (length == 1) { 119 if (length == 1) {
120 var e = array[0]; 120 var e = array[0];
121 if (IS_STRING(e)) return e; 121 if (IS_STRING(e)) return e;
122 return convert(e); 122 return convert(e);
123 } 123 }
124 124
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 450
451 var new_length = n + m; 451 var new_length = n + m;
452 array.length = new_length; 452 array.length = new_length;
453 return new_length; 453 return new_length;
454 } 454 }
455 455
456 456
457 // Returns an array containing the array elements of the object followed 457 // Returns an array containing the array elements of the object followed
458 // by the array elements of each argument in order. See ECMA-262, 458 // by the array elements of each argument in order. See ECMA-262,
459 // section 15.4.4.7. 459 // section 15.4.4.7.
460 function ArrayConcat(arg1) { // length == 1 460 function ArrayConcatJS(arg1) { // length == 1
461 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.concat"); 461 CHECK_OBJECT_COERCIBLE(this, "Array.prototype.concat");
462 462
463 var array = ToObject(this); 463 var array = ToObject(this);
464 var arg_count = %_ArgumentsLength(); 464 var arg_count = %_ArgumentsLength();
465 var arrays = new InternalArray(1 + arg_count); 465 var arrays = new InternalArray(1 + arg_count);
466 arrays[0] = array; 466 arrays[0] = array;
467 for (var i = 0; i < arg_count; i++) { 467 for (var i = 0; i < arg_count; i++) {
468 arrays[i + 1] = %_Arguments(i); 468 arrays[i + 1] = %_Arguments(i);
469 } 469 }
470 470
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 // Set up non-enumerable functions of the Array.prototype object and 1485 // Set up non-enumerable functions of the Array.prototype object and
1486 // set their names. 1486 // set their names.
1487 // Manipulate the length of some of the functions to meet 1487 // Manipulate the length of some of the functions to meet
1488 // expectations set by ECMA-262 or Mozilla. 1488 // expectations set by ECMA-262 or Mozilla.
1489 InstallFunctions($Array.prototype, DONT_ENUM, $Array( 1489 InstallFunctions($Array.prototype, DONT_ENUM, $Array(
1490 "toString", getFunction("toString", ArrayToString), 1490 "toString", getFunction("toString", ArrayToString),
1491 "toLocaleString", getFunction("toLocaleString", ArrayToLocaleString), 1491 "toLocaleString", getFunction("toLocaleString", ArrayToLocaleString),
1492 "join", getFunction("join", ArrayJoin), 1492 "join", getFunction("join", ArrayJoin),
1493 "pop", getFunction("pop", ArrayPop), 1493 "pop", getFunction("pop", ArrayPop),
1494 "push", getFunction("push", ArrayPush, 1), 1494 "push", getFunction("push", ArrayPush, 1),
1495 "concat", getFunction("concat", ArrayConcat, 1), 1495 "concat", getFunction("concat", ArrayConcatJS, 1),
1496 "reverse", getFunction("reverse", ArrayReverse), 1496 "reverse", getFunction("reverse", ArrayReverse),
1497 "shift", getFunction("shift", ArrayShift), 1497 "shift", getFunction("shift", ArrayShift),
1498 "unshift", getFunction("unshift", ArrayUnshift, 1), 1498 "unshift", getFunction("unshift", ArrayUnshift, 1),
1499 "slice", getFunction("slice", ArraySlice, 2), 1499 "slice", getFunction("slice", ArraySlice, 2),
1500 "splice", getFunction("splice", ArraySplice, 2), 1500 "splice", getFunction("splice", ArraySplice, 2),
1501 "sort", getFunction("sort", ArraySort), 1501 "sort", getFunction("sort", ArraySort),
1502 "filter", getFunction("filter", ArrayFilter, 1), 1502 "filter", getFunction("filter", ArrayFilter, 1),
1503 "forEach", getFunction("forEach", ArrayForEach, 1), 1503 "forEach", getFunction("forEach", ArrayForEach, 1),
1504 "some", getFunction("some", ArraySome, 1), 1504 "some", getFunction("some", ArraySome, 1),
1505 "every", getFunction("every", ArrayEvery, 1), 1505 "every", getFunction("every", ArrayEvery, 1),
1506 "map", getFunction("map", ArrayMap, 1), 1506 "map", getFunction("map", ArrayMap, 1),
1507 "indexOf", getFunction("indexOf", ArrayIndexOf, 1), 1507 "indexOf", getFunction("indexOf", ArrayIndexOf, 1),
1508 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1), 1508 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1),
1509 "reduce", getFunction("reduce", ArrayReduce, 1), 1509 "reduce", getFunction("reduce", ArrayReduce, 1),
1510 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1) 1510 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1)
1511 )); 1511 ));
1512 1512
1513 %FinishArrayPrototypeSetup($Array.prototype); 1513 %FinishArrayPrototypeSetup($Array.prototype);
1514 1514
1515 // The internal Array prototype doesn't need to be fancy, since it's never 1515 // The internal Array prototype doesn't need to be fancy, since it's never
1516 // exposed to user code. 1516 // exposed to user code.
1517 // Adding only the functions that are actually used. 1517 // Adding only the functions that are actually used.
1518 SetUpLockedPrototype(InternalArray, $Array(), $Array( 1518 SetUpLockedPrototype(InternalArray, $Array(), $Array(
1519 "concat", getFunction("concat", ArrayConcat), 1519 "concat", getFunction("concat", ArrayConcatJS),
1520 "indexOf", getFunction("indexOf", ArrayIndexOf), 1520 "indexOf", getFunction("indexOf", ArrayIndexOf),
1521 "join", getFunction("join", ArrayJoin), 1521 "join", getFunction("join", ArrayJoin),
1522 "pop", getFunction("pop", ArrayPop), 1522 "pop", getFunction("pop", ArrayPop),
1523 "push", getFunction("push", ArrayPush), 1523 "push", getFunction("push", ArrayPush),
1524 "splice", getFunction("splice", ArraySplice) 1524 "splice", getFunction("splice", ArraySplice)
1525 )); 1525 ));
1526 1526
1527 SetUpLockedPrototype(InternalPackedArray, $Array(), $Array( 1527 SetUpLockedPrototype(InternalPackedArray, $Array(), $Array(
1528 "join", getFunction("join", ArrayJoin), 1528 "join", getFunction("join", ArrayJoin),
1529 "pop", getFunction("pop", ArrayPop), 1529 "pop", getFunction("pop", ArrayPop),
1530 "push", getFunction("push", ArrayPush) 1530 "push", getFunction("push", ArrayPush)
1531 )); 1531 ));
1532 } 1532 }
1533 1533
1534 SetUpArray(); 1534 SetUpArray();
OLDNEW
« no previous file with comments | « no previous file | src/arraybuffer.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698