[MLton-devel] eliminating HandlerPush/Pop

Henry Cejtin henry@sourcelight.com
Fri, 10 Jan 2003 10:37:26 -0600

I'm  amazed  that  the  result  was an improvement for count-graphs.  I'm not
surprised that it showed the largest effect, but that the effect was good.

Count-graphs uses a complicated kind of fold-over-tree which really wants  to
call  the  folder  with  3 continuations: one is the `just keep folding', the
second is to abandone the current branch (i.e., the sub-tree  rooted  at  the
current  node) but to continue with the rest of the tree, and the third is to
abandon the entire fold.  Instead of using 3  continuation  functions,  which
would  result in all the live data moving to the heap, I call the folder with
the first continuation and pass two exceptions around which the folder raises
to  abort  up to get to the other two continuations (which were always a part
of the first continuation).  The result is a huge number of handlers, many of
which are actually reached and many of which are not.

Not a typical piece of code, but a very heavy user of exceptions.

This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
MLton-devel mailing list