To be clear I meant, the VM knows *statically* whether to write code for a regular call or a tail call and that it is *possible* to do something *clever* by inspecting and rewriting the stack. Specifically, if you can inspect the stack for something that is inserted before performing the first tail call it is *possible* possible to distinguish. This is both complicated and potentially costly and very likely not worth the effort.
On Fri, Feb 19, 2016 at 1:53 AM, Andreas Rossberg <[email protected]> wrote: > > > On 19 February 2016 at 10:29, Andreas Rossberg <[email protected]> > wrote: > >> On 19 February 2016 at 06:29, John Lenz <[email protected]> wrote: >> >>> However, at the CPU level, it seems like you would be better pushing an >>> return address for a special function that indicated the start of a >>> sequence of tail calls. That way you trade only some >>> complexity/performance for tail calls (an inspection of the last entry of >>> the call stack) and some stack frame building complexity (to recognize this >>> "special" frame). >>> >> >> There is no way of knowing, neither statically nor dynamically, that you >> are at "the start of a sequence of tail calls". And doing it for every tail >> call would of course defeat tail calls. >> > > Or to put that differently: if there was, then the very problem wouldn't > exist. ;) >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

