| Index: src/array.js
|
| diff --git a/src/array.js b/src/array.js
|
| index 599fd5cfe98e97e484926ed697966041cb464561..a3674e837d3ade7a59e7ddc159ff77b6b745ebd5 100644
|
| --- a/src/array.js
|
| +++ b/src/array.js
|
| @@ -1001,11 +1001,13 @@ function ArraySort(comparefn) {
|
| max_prototype_element = CopyFromPrototype(this, length);
|
| }
|
|
|
| - var num_non_undefined = %RemoveArrayHoles(this, length);
|
| + var num_non_undefined = %IsObserved(this) ?
|
| + -1 : %RemoveArrayHoles(this, length);
|
| +
|
| if (num_non_undefined == -1) {
|
| - // There were indexed accessors in the array. Move array holes and
|
| - // undefineds to the end using a Javascript function that is safe
|
| - // in the presence of accessors.
|
| + // The array is observed, or there were indexed accessors in the array.
|
| + // Move array holes and undefineds to the end using a Javascript function
|
| + // that is safe in the presence of accessors and is observable.
|
| num_non_undefined = SafeRemoveArrayHoles(this);
|
| }
|
|
|
|
|