val _ = () and exception optimization in MLton

Henry Cejtin henry@sourcelight.com
Fri, 11 Aug 2000 18:10:15 -0500


I'm  confused.   Wasn't  this the whole point of the compile-time part of the
handler-stack?  (`This' being to not bother manipulating the handler stack in
memory unless you called something.)

I  still  don't  see why the current code doesn't cause more push-pops of the
handler stack.  If I have a loop which is called inside  a  handle,  and  the
loop  is  inlined, but in the loop it calls a procedure which is NOT inlined,
then won't the new code push on the handler stack just before  the  call  and
pop  after?   I.e.,  take  the  example  I sent you, and assume that outer IS
inlined by inner is NOT inlined.  Then  the  old  code  would  do  1  handler
push/pop  while  the new code will do 1000 push/pops, right?  I'm not arguing
that the handler stack gets deeper, just that it fribulates more.

Am I still missing something?