[MLton] Handler in SSA Returns?

Stephen Weeks sweeks@sweeks.com
Wed, 21 Jun 2006 12:35:23 -0700


> What does the handler argument to NonTail returns indicate?  There
> are three different constructors for the datatype -- Caller, Dead
> and Handle -- what do they do?

The "handler" field says what to do with the exception handler stack
when making a nontail call.

 * Caller: Use the same handler stack as was received by the caller. 
   I.E. leave the handler stack alone.

 * Handle l: Push onto the handler stack a new handler that handles an
   exception by jumping to the code at label l.  The handler is
   implicitly popped in the event of a normal return.

 * Dead: The callee cannot raise an exception, in which case no
   exception handlers need to be available (the handler stack is
   "dead").