Sorry, yes. Too early in the morning for me. :)

Indeed, handler traps are exactly the place where the system *produces* names 
and hands them to handler traps which consume them, and that's where it must 
produce a public key rather than a private name object.

Dave

On Jul 8, 2011, at 8:20 AM, Brendan Eich wrote:

> On Jul 8, 2011, at 7:17 AM, David Herman wrote:
> 
>>> The proposal does mention: "All reflective operations that produce a 
>>> property name, when reflecting on a private name, produce the name’s 
>>> .public property instead of the name itself."
>>> 
>>> Would the same hold for reflective operations that consume property names, 
>>> such as handler traps?
>> 
>> No, they would require the private name object.
> 
> I don't think that's what Tom was asking about, though. The proposal may 
> simply be unclear in using "produce" instead of "consume" since the proxy 
> mechanism does not produce private names in any generative sense when one 
> writes p[q] for proxy p and private name q.
> 
> Rather, the VM substitutes q.public for q when calling p's handler's relevant 
> trap (getOwnPropertyDescriptor, get, ...). So there's no leak, as you note, 
> and the owner of q is free to share it with trap implementations that should 
> have access to it, so they can compare name == q.public, memoize in q.public 
> in a weak map, etc.
> 
> /be

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

Reply via email to