>> On Apr 25, 2014, at 7:07 AM, Andreas Rossberg <[email protected]> wrote:
>> 
>>> On 25 April 2014 00:16, Allen Wirfs-Brock <[email protected]> wrote:
>>> On Apr 24, 2014, at 2:33 PM, Mark S. Miller wrote:
>>> 
>>> Excellent. Given that, how realistic is the performance concern for the 
>>> non-exceptional situation? Where is the overhead?
>> 
>> the body of the for-of loop could directly or indirectly throw an exception 
>> or contain a break.The break can presumably be statically detected and 
>> cleanup handled by the break logic.  But the loop still needs the equivalent 
>> of a finally around it, just in case an exception is thrown from the body.  
>> It's hander needs to invoke @@return on the generator.
>> 
>> The point of debate is the cost of setting up that finally-equivalent, 
>> potentially for every for-of loop. The argument is that for some/most(??) 
>> current implementations there is significant runtime overhead to this setup.
> 
> The broader argument is that this cost is imposed on the common use
> case and has to be weighed against the utility it adds for a case that
> is (1) rare, and (2) not well-motivated according to some participants
> of the discussion (e.g., it's not necessarily a good idea to rely on
> finally-blocks for scarce resource management in the first place,
> since they provide only weak guarantees either way).
> 
>> The contra argument is that there are technique that have zero to very low 
>> setup costs and that implementations may need to evolve to use them.
> 
> To be sure, AFAICT none of these techniques have been demonstrated in
> a JS-like language. Even in C++ land they have been a pipe dream for a
> long time.

Try-catch is free in Java unless you throw. I wouldn't compare to C++ because 
current C++ implementations are limited by things like ABI standards. All 
JS-like languages are still in the baby stage of VM development; it's unfair to 
extrapolate future performance from current performance given how quickly 
things are changing. 

It's just a matter of common sense that JS implementations move to totally-free 
entry/exit into try-catch and a sensible cost model for when you throw, 
regardless of how this proposal goes. The fact that either of these things is a 
performance cliff is simply a bug and it will likely be fixed soon, given the 
pace of JS VM evolution.

So I wouldn't let these performance concerns hold up figuring out the right 
semantics. 

-Filip

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to