SSA

Matthew Fluet fluet@CS.Cornell.EDU
Tue, 23 Oct 2001 17:29:44 -0400 (EDT)


> > > 		     conts: {handler: Ssa.Label.t option,
> > > 			     live: Machine.Operand.t list,
> > > 			     size: int} list
> > 
> > I actually changed it to
> > 
> > 		     liveFrame: (Ssa.Label.t option * Machine.Operand.t list) list,
> > 		     cont: {size: int} option,
> > 
> > Your alternative would be fine.  But it's still a question of figuring out
> > the right size.
> 
> I am confused.  These are different.  Yours has one size -- mine has
> one per stub.

One advantage of Steve's suggestion is that I probably would have been
more likely to use the stub's frame size when _making_ the non-tail call,
not just when returning from the non-tail call.  ;)  How anything at all
was working is beyond me!  The callee could stomped all over the handler's
live data, and, on return, we would set stackTop to some completely screwy
location!  I guess this suggests that almost all of the time the
continuation's frame size is bigger than the handler's frame size (hence,
it is equal to the stub's frame size). Which is good -- that means
changing the return convention should end up doing the "right thing"
almost all the time.

I'm starting regressions and self-compiles, but I think this is coming
together.