[MLton] MLton calling convention and closure conversion

skaller skaller at users.sourceforge.net
Mon Jan 22 20:42:15 PST 2007


On Tue, 2007-01-23 at 01:08 +0100, Wesley W. Terpstra wrote:
> I wanted to make sure I understand these issues before I spread  
> misinformation:
> 
> As I understand it, gcc doesn't do tail recursion very well, because  
> it is the caller's responsibility to pop the stack; the callee does  
> not know the number of arguments passed to the function.

What you say is true in modern ISO C *only* for functions which 
have variable argument lists, such as 'printf'.

More particularly it isn't the performance of gcc that matters
as much as the ABI it must conform to. 

Linux/AMD64 seems to allow tail calls:

http://felix.sourceforge.net/speed/en_flx_perf_0005.html

shows Felix, gcc, and gnat outperform Ocaml, which
definitely implements them. Mlton will be hard 
pressed to do better here.

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net



More information about the MLton mailing list