SSA

Matthew Fluet Matthew Fluet <fluet@CS.Cornell.EDU>
Tue, 23 Oct 2001 14:00:29 -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.

Sure.  What I have for size is the size of the "real" continuation: a
stack height that is greater than the stack slots of any variable that is
live at the beginning of the continuation.  You have a size for the stub:
a stack height that is greater than the stack slots of any variable that
is live at the beginning of the continuation or the handler.  I also
changed the handler field to:

		     handler: {size: int, offset: int} option

where the handler's size is again: a stack height greater than the stack
slot of any variable that is live at the beginning of the handler.

I simply compute your stub size as the maximum of the sizes for the
continuation and the handler.

In retrospect, what might be more unified is simply to have every block
have a size; we just care about the sizes of continuations and handlers.