On Apr 28, 2015, at 4:21 PM, John Lenz wrote:

> 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.
> 
did you see 
https://esdiscuss.org/topic/performance-of-iterator-next-as-specified#content-15
 

A really good optimizing jit should be able to inline the 'next' call, 
recognize that the IterationResult object doesn't escape (it knows this for 
for-of loops) and not do an allocation at all.

Allen



> 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

Reply via email to