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

Reply via email to