Le 29/12/2011 05:08, Mark S. Miller a écrit :
> On Wed, Dec 28, 2011 at 6:48 PM, Mark S. Miller <erig...@google.com
> <mailto:erig...@google.com>> wrote:
> [...]
>
>     For example, regarding sorting, leaving aside sparseness, I
>     suspect our shared model is that any sort algorithm implementation
>     itself takes only the following observable steps, but in some
>     arbitrary order and not necessarily terminating:
>
>
>     obj.[[Get]](String(i)), where i is an integer && 0 <= i && i < len
>     (recall that len is already the result of array.[[Get]]('length'))
>     obj.[[Put]](String(i), x), where i as above, and x is only a value
>     previously gotten with a [[Get]]
>     ToNumber(comparefn(x, y)), where x and y are only values
>     previously gotten with a [[Get]]
>
More explicitely, here:
comparefn.[[Call]] with 'this' bound to 'undefined'.

David
>
>
>     To adjust for sparseness, the sort function may also invoke
>
>     obj.[[HasProperty]](String(i))
>     obj.[[HasOwnProperty]](String(i)) // perhaps? I see no mention of
>     it in the algorithm
>     obj.[[Delete]](String(i))
>     obj.[[Put]]('length', String(i))
>
>     Notice that this specification does not assume away the
>     possibility of arbitrary side effects or I/O caused by the
>     comparefn or by accessor properties at obj indexes or 'length'.
>
>
> And a call to sort stops performing any of these observable actions
> once it completes (whether by returning or throwing).
>
> Are there any implementation freedoms that we actually wish to allow
> that are outside the above limits? I cannot think of any.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to