David Bruant wrote:
Le 16/01/2013 19:42, Brendan Eich a écrit :
David Bruant wrote:
Hi,

This is an idea naturally derived of all the current discussions about WeakMaps and Private symbols. The proposal is easily summarized by these lines of code:

    var wm = new WeakMap();
    var o = {};
    o[wm] = 12 // desugars to wm.set(o, 12)
    var a = o[wm]; // desugars to wm.get(o);
    wm in o // desugars to wm.has(o);
delete o[wm] // desugars to wm.delete(o);

You are not showing the desugaring in general:

function get(o,x) {
  return o[x];
}

must transform to

function get(o,x) {
  return (x is WeakMap) ? x.get(o) : o[x];
}
You're right, I hadn't thought of that.

This is not an acceptable hit for every []-named property access.
I intuit (and may be wrong) that even just observing types (weakmap or stringified type) passed to a []-access can be a good indicator of how best []-named property access should be JIT-compiled. You pay the price of the (x is WeakMap) test only the time the JIT warms up.
Given what's in current engines, it sounds doable.

No, it's a hit, pure and simple. Engines do various things, SpiderMonkey does semi-static analysis (type inference), but in generic code, you propose to add a ?: to every [] operation. I think that's a non-starter. I invite others (Andreas R. especially) to weigh in.

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

Reply via email to