Private symbols as WeakMap sugar

Allen Wirfs-Brock allen at wirfs-brock.com
Wed Jan 16 11:03:22 PST 2013


On Jan 16, 2013, at 10:53 AM, 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.

If you want to explore this area, I suggest taking a fresh look at http://wiki.ecmascript.org/doku.php?id=strawman:object_model_reformation 

Allen


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130116/72a0b732/attachment.html>


More information about the es-discuss mailing list