[Mono-devel-list] tailcall support in mcs

Michal Moskal malekith at pld-linux.org
Mon Sep 15 08:03:16 EDT 2003

On Mon, Sep 15, 2003 at 06:40:17AM -0500, Marcus wrote:
> This does bring up a question. According to the ECMA docs (Partition III, 
> 2.1), "In the presence of ldloca and ldargs instructions, it isn't always 
> possible for a compiler from CIL to native code to optimally determine when a 
> tail. can be automatically inserted."
> How do the ldloca and ldargs instructions affect tail calls?

The problem is that you cannot pass managed pointers to variables in
given stack frame, and later replace it (which is what tail.call does).

However when we honour this "Verification requires that no managed
pointers are passed to the method being called, since it does not track
pointers into the current frame", then we havn't got this problem.

: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h

More information about the Mono-devel-list mailing list