Changeset 184926 in webkit for trunk/Source/JavaScriptCore/builtins
- Timestamp:
- May 27, 2015, 4:43:22 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/builtins/Array.prototype.js
r184917 r184926 287 287 function stringComparator(a, b) 288 288 { 289 var aString = @toString(a);290 var bString = @toString(b);289 var aString = a.string; 290 var bString = b.string; 291 291 292 292 var aLength = aString.length; … … 301 301 continue; 302 302 303 if (aCharCode < bCharCode) 304 return -1; 305 306 return 1; 307 } 308 309 if (aLength == bLength) 310 return 0; 311 312 if (aLength < bLength) 313 return -1; 314 315 return 1; 303 return aCharCode - bCharCode; 304 } 305 306 return aLength - bLength; 316 307 } 317 308 … … 441 432 } 442 433 434 function stringSort(array) 435 { 436 var length = array.length >>> 0; 437 438 // For compatibility with Firefox and Chrome, do nothing observable 439 // to the target array if it has 0 or 1 sortable properties. 440 if (length < 2) 441 return; 442 443 var valueCount = compact(array, length); 444 445 var strings = new @Array(valueCount); 446 for (var i = 0; i < valueCount; ++i) 447 strings[i] = { string: @toString(array[i]), value: array[i] }; 448 449 mergeSort(strings, valueCount, stringComparator); 450 451 for (var i = 0; i < valueCount; ++i) 452 array[i] = strings[i].value; 453 } 454 443 455 if (this === null) 444 456 throw new @TypeError("Array.prototype.sort requires that |this| not be null"); … … 450 462 throw new @TypeError("Attempted to assign to readonly property."); 451 463 452 if (typeof comparator !== "function") 453 comparator = stringComparator; 454 455 var array = @Object(this); 456 comparatorSort(array, comparator); 464 var array = @Object(this); 465 466 if (typeof comparator == "function") 467 comparatorSort(array, comparator); 468 else 469 stringSort(array); 470 457 471 return array; 458 472 }
Note:
See TracChangeset
for help on using the changeset viewer.