CWS paper

Matthew Fluet fluet@CS.Cornell.EDU
Mon, 4 Dec 2000 12:26:04 -0500 (EST)


Steve, what's the final version of the contification pass in MLton now?
(i.e., is it catching all of contifications that seem reasonable?)

> > Thanks for the detailed description of contification.  I think that what you
> > are doing is very similar to our "frame phase", which is the last step
> > before code generation.  The frame phase runs after closure conversion
> > and combines functions into the same cluster (tail-calls in the same cluster
> > are treated as gotos).  Since MLton has already CPS converted the program,
> > contification is sufficient to get the frame sharing that we need, but for
> > our direct-style IR, we need the LCPS conversion first to enable the frame
> > sharing later.
> > 
> > Also, the "call-based" analysis that you describe is essentially the same
> > one that we use to cluster functions in the frame phase.
> 
> Makes sense.  I'd be interested to hear why you don't just CPS the whole
> program.  We've found no disadvantages to having a (first-order, stack based)
> CPS IL.  But that can certainly wait for another day.
> 
> Another interesting difference is the fact the MLton does a lot of optimization
> after contification.  Maybe Moby doesn't do so because you haven't gotten around
> to it yet.  But having more intraprocedural information helps optimization a
> lot.
> 
> > One of my reviews pointed me at Kelsey's IR'95 paper (on CPS and SSA).
> > He describes something that looks a lot like what you are
> > calling "contification."  Is that the source of the idea?
> 
> Yes.  That paper and Appel's related paper (SSA is functional programming)
> influenced the design of MLton's CPS IL.
>