On Wed, Jan 15, 2014 at 1:26 PM, Allen Wirfs-Brock
<al...@wirfs-brock.com> wrote:
> So we discussed all that when we made that decision.  I understand that you 
> disagree but is there any new data that should cause us to reopen an issue 
> that was already discussed and decided at a TC39 meeting?

Well, here's one data point. This function, like most Math functions,
is particularly useful for systems that compile to JS, like
Emscripten. See <https://bugzilla.mozilla.org/show_bug.cgi?id=925123>.

Emscripten emits code (roughly) like this:

    function program() {
        var sin = Math.sin;
        ... lots of functions that call sin() ...
        return main;
    }

This kind of code has nice tamper-resistant semantics and (not
coincidentally) it will scream on existing JS engines.

If clz is a Math function, Emscripten can just

    var clz = Math.clz;

If it's a method, it would have to emit something like:

    var clz = Function.prototype.call.bind(Number.prototype.clz);

and hope the JS engines all optimize away the bound method call.

-j
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to