On Nov 15, 2012, at 1:15 PM, David Herman <[email protected]> wrote:

> On Nov 15, 2012, at 1:04 PM, Allen Wirfs-Brock <[email protected]> wrote:
> 
>> On Nov 15, 2012, at 12:37 PM, Andrea Giammarchi wrote:
>> 
>>> I believe with is much more problematic than caller for all Engines out 
>>> there. A reference to "who is invoking" cannot be that bad ... is it?
>> 
>> Yes it is!  It is a capability leak.  It give a callee access to functions 
>> that would otherwise be inaccessible to the callee.  Who knows what mischief 
>> can be accomplished by calling such functions.
> 
> What's more, it's totally inadequate as a stack walking tool. If any function 
> appears twice in a call stack (most commonly in the presence of recursion), 
> you can't walk the whole stack. You either have to detect the repeat and give 
> up, or loop infinitely. So in addition to being a security, performance, and 
> engineering nightmare, arguments.caller is pretty much useless.

And to be clear, it *is* a problem for engines: it prevents proper tail calls 
(or even tail call optimization).

Dave

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

Reply via email to