[MLton] cvs commit: improved exception history for Overflow

Matthew Fluet fluet@cs.cornell.edu
Mon, 23 May 2005 15:40:25 -0400 (EDT)


> > I ended up going for a two-piece solution that didn't require changing
> > any ILs.  The elaborator wraps an Enter/Leave around each raise
> > expression, just as it does around each function body.  The (still
> > horribly misnamed) defunctorizer wraps an Enter/Leave around each
> > raise {Bind,Match} that the match compiler generates.  Fortunately, we
> > already had the source position info there for the warnings generated
> > by match compilation.
> 
> These extra Enter/Leave's should probably be predicated upon
> Control.exnHistory, else they will add a lot of source positions to
> -profile count.
> 
> Alternatively, if one thinks that counting raises would be of interest, we 
> could add  -profile-raise {false|true}  which is implicitly enabled by 
> -const 'Exn.keepHistory true' and then the elaborator/defunctorizer would 
> predicate upon Control.profileRaise.

I implemented the second alternative.