| Index: src/array.js
|
| ===================================================================
|
| --- src/array.js (revision 7031)
|
| +++ src/array.js (working copy)
|
| @@ -161,15 +161,7 @@
|
| var result = %_FastAsciiArrayJoin(elements, separator);
|
| if (!IS_UNDEFINED(result)) return result;
|
|
|
| - var length2 = (length << 1) - 1;
|
| - var j = length2;
|
| - var i = length;
|
| - elements[--j] = elements[--i];
|
| - while (i > 0) {
|
| - elements[--j] = separator;
|
| - elements[--j] = elements[--i];
|
| - }
|
| - return %StringBuilderConcat(elements, length2, '');
|
| + return %StringBuilderJoin(elements, length, separator);
|
| } finally {
|
| // Make sure to remove the last element of the visited array no
|
| // matter what happens.
|
| @@ -426,7 +418,6 @@
|
|
|
|
|
| function ArrayConcat(arg1) { // length == 1
|
| - // TODO: can we just use arguments?
|
| var arg_count = %_ArgumentsLength();
|
| var arrays = new $Array(1 + arg_count);
|
| arrays[0] = this;
|
| @@ -1026,13 +1017,13 @@
|
| }
|
| var min = index;
|
| var max = length;
|
| - if (UseSparseVariant(this, length, true)) {
|
| + if (UseSparseVariant(this, length, IS_ARRAY(this))) {
|
| var intervals = %GetArrayKeys(this, length);
|
| if (intervals.length == 2 && intervals[0] < 0) {
|
| // A single interval.
|
| var intervalMin = -(intervals[0] + 1);
|
| var intervalMax = intervalMin + intervals[1];
|
| - min = MAX(min, intervalMin);
|
| + if (min < intervalMin) min = intervalMin;
|
| max = intervalMax; // Capped by length already.
|
| // Fall through to loop below.
|
| } else {
|
| @@ -1082,13 +1073,13 @@
|
| }
|
| var min = 0;
|
| var max = index;
|
| - if (UseSparseVariant(this, length, true)) {
|
| + if (UseSparseVariant(this, length, IS_ARRAY(this))) {
|
| var intervals = %GetArrayKeys(this, index + 1);
|
| if (intervals.length == 2 && intervals[0] < 0) {
|
| // A single interval.
|
| var intervalMin = -(intervals[0] + 1);
|
| var intervalMax = intervalMin + intervals[1];
|
| - min = MAX(min, intervalMin);
|
| + if (min < intervalMin) min = intervalMin;
|
| max = intervalMax; // Capped by index already.
|
| // Fall through to loop below.
|
| } else {
|
|
|