You would hope that the engines might be able to create these objects on the stack but I don't think anyone does that yet and the result is a flood of eden objects.
I would like to know I'm wrong about this. On Apr 27, 2015 4:59 PM, "Allen Wirfs-Brock" <[email protected]> wrote: > > On Apr 27, 2015, at 3:29 PM, Tab Atkins Jr. wrote: > > On Mon, Apr 27, 2015 at 3:11 PM, John Lenz <[email protected]> wrote: > > By which I mean the object that returns the current value and "done" state? > > > IIRC, it's not supposed to. The built-in iterators will return fresh > objects each time, so there's no mutation hazard. Userland iterators > can of course violate this, but at their peril. > > > Well, that's not exactly what the ES2015 spec. says. The specification of > the Iterator interface ( > http://people.mozilla.org/~jorendorff/es6-draft.html#sec-iterator-interface ) > does not require that the `next` method return a fresh object each time it > it called. So a userland iterator would not be violating anything by > reusing a result object. > > However, the specifications for all ES2015 built-in iterators require > that they return fresh objects. > > None of the built-in consumers of the Iterator interface (for-of, > Array.from, etc.) retain references to IteratorResult objects after testing > for `done` and accessing the `value`, so semantically they don't care > whether the ResultObject is reused. However, such reuse might preclude some > otherwise plausible engine level optimizations. > > Allen > > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

