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.
>