Le 13/09/2013 09:19, Tom Van Cutsem a écrit :
2013/9/12 Mark S. Miller <erig...@google.com <mailto:erig...@google.com>>
Membranes need shadow targets, because of non-extensibility of
objects and non-configurability of properties. This special case
of no-invariants-anywhere is not JavaScript. Trying to do
membranes without shadow targets is a useless exercise.
True, but by removing the invariant check on getPrototypeOf, a
membrane proxy can now avoid the cost of actually storing the wrapped
prototype on the shadow target until the real target becomes
observably non-extensible (which may never occur).
More generally, membranes always need to be set-up with shadow
targets, but they don't actually need to use them until the real
target has some invariants.
If one wants Object.getPrototypeOf to return the same object twice, the
membrane has to associate a new prototype with a given object. If there
is a shadow target, the place of where to store this object is pretty
obvious ([[Prototype]]).
That said, the good property that remains is that if a prototype setting
capability has been kept around is that prototype chains can be built
lazily.
Davod
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss