new coalescer causes too large stack frames

Stephen Weeks sweeks@intertrust.com
Mon, 10 May 1999 11:48:16 -0700 (PDT)


> I  put  in  my  new  coalescer  into MLton (a very slow version) and tried to

I assume you mean:

> I  put  in  my  new  coalescer (a very slow version) into MLton  and tried to

> Sadly, the compile did not actually succeed.  MLton printed out
>         Bug: MLton cannot handle stack frames larger than 65536 bytes.

Wow.  I was sure that assert would never fail.

> Are the stack frames it is talking  about  MLton  stack  frames  or  C  stack
> frames? 

MLton stack frames

> Why would making chunks larger cause stack frames to get bigger?  I
> guess I could see the C stack frame getting larger, but I don't see  why  the
> MLton  stack frame would get bigger.  

I'm with you.  I don't see any reason.

> I guess that more is saved in the MLton
> stack if there are more inter-chunk transfers, 

Not true.  The chunkifier already enforces the minimum amount of
coalescing needed so that all Cps jumps are intrachunk.  The register
allocator only puts a variable on the stack if it is live accross a
nontail call, which is a property of the Cps code.