On Jul 18, 2012, at 1:28 PM, Brendan Eich <bren...@mozilla.org> wrote:

> Ollie: IIRC, JSC used to do what Rhino still does (last I looked): specialize 
> __proto__ in the compiler or runtime (but either way, ahead of property 
> lookup). True?
> 
> That's definitely not on the table. Accessor vs. magic data property is the 
> high-order choice, which at the May TC39 meeting we made in favor of magic 
> data property.

Um.  That what i just said.  We used to have a magic property that could not be 
killed.  Now we have an accessor on the prototype.  That is: something less 
powerful that can be removed.

> 
> Jason: __proto__ as an accessor doesn't just "almost make sense", it actually 
> does fit in the language, cycle checking and all. That is, you could 
> self-host it in ES5 if you self-hosted prototype chains too.
> 
> Your suggestion of the setter checking that the receiving object inherit the 
> built-in __proto__ before actually doing the "set" is interesting, but it 
> seems to me that it means every set does a proxy-observable "has" operation. 
> That's not something we do today -- maybe it's ok to add it -- but it is also 
> overhead and opportunity for mischief. Or did you have a thought on how to 
> silently probe for the property descriptor?
> 
> /be
> 
> Oliver Hunt wrote:
>> JSC migrating __proto__ to accessors did not add any power, if anything it 
>> removed/reduced power.  The old __proto__ was an extraordinarily magical 
>> property that existed on every object.  It was not possible to remove/block 
>> it at all.  So anyone could make an accessor or function or implicit 
>> conversion that could arbitrarily change the prototype of an object.
>> 
>> --Oliver
>> 
>> On Jul 18, 2012, at 1:11 PM, Jason Orendorff<jason.orendo...@gmail.com>  
>> wrote:
>> 
>>> On Wed, Jul 18, 2012 at 4:35 AM, Andreas Rossberg<rossb...@google.com>  
>>> wrote:
>>>> I agree with that. I'm not quite convinced that there are relevant security
>>>> implication with an accessor semantics either.
>>> If we want to be sure we're not adding any power here, the __proto__
>>> setter should simply check that the receiver actually has the original
>>> __proto__ property; if not, it should throw.
>>> 
>>> That would be weird, but safe, and the weirdness would be isolated in
>>> a section of the specification under the heading "__proto__ setter" in
>>> an annex.  Containment!
>>> 
>>>> I also don't think that array length counts as proper precedence.
>>> Speaking as an implementor, I see array length as a precedent to be
>>> avoided.  SpiderMonkey still doesn't implement all its quirks.
>>> 
>>> I'm not surprised Waldo's experiment with accessor __proto__ went
>>> smoothly.  That's because __proto__ as an accessor property almost
>>> makes sense.
>>> 
>>> Specifying an accessor property--plus a single special case for
>>> ObjectLiterals, which we can handle in the front end--will make less
>>> work and a nicer spec (that is, looser coupling, better isolation of
>>> special cases).
>>> 
>>> -j
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss@mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>> 

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

Reply via email to