On Sun, Jan 19, 2014 at 7:21 PM, Allen Wirfs-Brock <[email protected]>wrote:
> It isn't clear that there much need for a global name for
> GeneratorFunction. If you really eed to access it can always get it via:
>
> (function *() {}).constructor
>
> (as the always helful generator UMO diagram at
> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorfunction-objects
> tells
> us)
>
SES needs to visit every 'primordial' / 'singleton' object to ensure
they're made immutable and harmless. (Other 'meta' code might also benefit
though I don't know of any examples offhand.)
This job is easier if all such objects are reachable via traversing data
properties.
ES5 contains only one object which this is not true of: [[ThrowTypeError]].
This would have been fine since [[ThrowTypeError]] as specified is
immutable and harmless, but in practice many implementations have bugs or
extensions which make it mutable. We had to add a special case for it to
ensure that it was traversed.
https://code.google.com/p/google-caja/issues/detail?id=1661
https://codereview.appspot.com/8093043/diff/19001/src/com/google/caja/ses/repairES5.js
It would be nice if there was some way in ES6 to make sure SES doesn't miss
any objects — either that every primordial object is reachable via data
properties (more precisely: that there are no preexisting objects which are
reachable only by way of executing some program construct; e.g. Array is
reachable by [].constructor, but is also named Array in the standard
environment), or there is some other way to enumerate them.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss