diff options
Diffstat (limited to 'deps/v8/src/array.js')
-rw-r--r-- | deps/v8/src/array.js | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/deps/v8/src/array.js b/deps/v8/src/array.js index cf99aceb69..44deff7de4 100644 --- a/deps/v8/src/array.js +++ b/deps/v8/src/array.js @@ -144,7 +144,7 @@ function Join(array, length, separator, convert) { elements[elements_length++] = e; } elements.length = elements_length; - var result = %_FastAsciiArrayJoin(elements, ''); + var result = %_FastOneByteArrayJoin(elements, ''); if (!IS_UNDEFINED(result)) return result; return %StringBuilderConcat(elements, elements_length, ''); } @@ -168,7 +168,7 @@ function Join(array, length, separator, convert) { elements[i] = e; } } - var result = %_FastAsciiArrayJoin(elements, separator); + var result = %_FastOneByteArrayJoin(elements, separator); if (!IS_UNDEFINED(result)) return result; return %StringBuilderJoin(elements, length, separator); @@ -375,7 +375,7 @@ function ArrayJoin(separator) { separator = NonStringToString(separator); } - var result = %_FastAsciiArrayJoin(array, separator); + var result = %_FastOneByteArrayJoin(array, separator); if (!IS_UNDEFINED(result)) return result; return Join(array, length, separator, ConvertToString); @@ -863,11 +863,12 @@ function ArraySort(comparefn) { var t_array = []; // Use both 'from' and 'to' to determine the pivot candidates. var increment = 200 + ((to - from) & 15); - for (var i = from + 1; i < to - 1; i += increment) { - t_array.push([i, a[i]]); + for (var i = from + 1, j = 0; i < to - 1; i += increment, j++) { + t_array[j] = [i, a[i]]; } - t_array.sort(function(a, b) { - return %_CallFunction(receiver, a[1], b[1], comparefn) } ); + %_CallFunction(t_array, function(a, b) { + return %_CallFunction(receiver, a[1], b[1], comparefn); + }, ArraySort); var third_index = t_array[t_array.length >> 1][0]; return third_index; } @@ -969,7 +970,7 @@ function ArraySort(comparefn) { // It's an interval. var proto_length = indices; for (var i = 0; i < proto_length; i++) { - if (!obj.hasOwnProperty(i) && proto.hasOwnProperty(i)) { + if (!HAS_OWN_PROPERTY(obj, i) && HAS_OWN_PROPERTY(proto, i)) { obj[i] = proto[i]; if (i >= max) { max = i + 1; } } @@ -977,8 +978,8 @@ function ArraySort(comparefn) { } else { for (var i = 0; i < indices.length; i++) { var index = indices[i]; - if (!IS_UNDEFINED(index) && - !obj.hasOwnProperty(index) && proto.hasOwnProperty(index)) { + if (!IS_UNDEFINED(index) && !HAS_OWN_PROPERTY(obj, index) + && HAS_OWN_PROPERTY(proto, index)) { obj[index] = proto[index]; if (index >= max) { max = index + 1; } } @@ -998,7 +999,7 @@ function ArraySort(comparefn) { // It's an interval. var proto_length = indices; for (var i = from; i < proto_length; i++) { - if (proto.hasOwnProperty(i)) { + if (HAS_OWN_PROPERTY(proto, i)) { obj[i] = UNDEFINED; } } @@ -1006,7 +1007,7 @@ function ArraySort(comparefn) { for (var i = 0; i < indices.length; i++) { var index = indices[i]; if (!IS_UNDEFINED(index) && from <= index && - proto.hasOwnProperty(index)) { + HAS_OWN_PROPERTY(proto, index)) { obj[index] = UNDEFINED; } } @@ -1029,14 +1030,14 @@ function ArraySort(comparefn) { } // Maintain the invariant num_holes = the number of holes in the original // array with indices <= first_undefined or > last_defined. - if (!obj.hasOwnProperty(first_undefined)) { + if (!HAS_OWN_PROPERTY(obj, first_undefined)) { num_holes++; } // Find last defined element. while (first_undefined < last_defined && IS_UNDEFINED(obj[last_defined])) { - if (!obj.hasOwnProperty(last_defined)) { + if (!HAS_OWN_PROPERTY(obj, last_defined)) { num_holes++; } last_defined--; |