lgtm

On 10/1/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Reviewers: Mads Ager,
>
> Description:
> Various minor improvements of sort.
>
> Please review this at http://codereview.chromium.org/6035
>
> Affected files:
>    M     src/array.js
>
>
> Index: src/array.js
> ===================================================================
> --- src/array.js      (revision 402)
> +++ src/array.js      (working copy)
> @@ -650,14 +650,10 @@
>     // In-place QuickSort algorithm.
>     // For short (length <= 22) arrays, insertion sort is used for
> efficiency.
>
> +  var custom_compare = IS_FUNCTION(comparefn);
> +
>     function Compare(x,y) {
> -    if (IS_UNDEFINED(x)) {
> -      if (IS_UNDEFINED(y)) return 0;
> -      return 1;
> -    }
> -    if (IS_UNDEFINED(y)) return -1;
> -
> -    if (IS_FUNCTION(comparefn)) {
> +    if (custom_compare) {
>         return comparefn.call(null, x, y);
>       }
>       if (%_IsSmi(x) && %_IsSmi(y)) {
> @@ -691,15 +687,13 @@
>           }
>         }
>         // place element at position min==max.
> -      for (var j = min; j < i; j++) {
> -        var tmp = a[j];
> -        a[j] = element;
> -        element = tmp;
> +      for (var j = i; j > min; j--) {
> +        a[j] = a[j - 1];
>         }
> -      a[i] = element;
> +      a[min] = element;
>       }
>     }
> -
> +
>     function QuickSort(a, from, to) {
>       // Insertion sort is faster for short arrays.
>       if (to - from <= 22) {
> @@ -743,6 +737,18 @@
>     %RemoveArrayHoles(this);
>
>     var length = ToUint32(this.length);
> +
> +  // Move undefined elements to the end of the array.
> +  for (var i = 0; i < length; ) {
> +    if (IS_UNDEFINED(this[i])) {
> +      length--;
> +      this[i] = this[length];
> +      this[length] = undefined;
> +    } else {
> +      i++;
> +    }
> +  }
> +
>     QuickSort(this, 0, length);
>
>     // We only changed the length of the this object (in
>
>
>

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to