[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: exception systems
From: Marc Feeley <feeley@IRO.UMontreal.CA>
Subject: Re: exception systems
Date: Fri, 19 Apr 1996 13:00:21 -0400
> > > | This is a myth. SML/NJ's implementation strategy happens to allow a
> > > | very cheap implementation of call/cc. It was, however, not chosen
> > > | just because of that. Also, I don't know what you mean by `making
> > > | everything else somewhat more expensive'. Admittedly, it is a
> > > | controversial topic, but if you look at Appel and Shao's papers on
> > > | this issue then you will see that the jury is still out.
> > >
> > > We can discuss this ad infinitum, but it is not a myth.
> >
> > Then, please, be specific. What is slowed down by SML/NJ's call/cc
> > mechanism?
>
> Three things (at least):
>
> 1) Non-tail function calls, because you need to initialize a dynamic
> link in the frames that you create.
>
> 2) Function return, because you need to follow the dynamic link to
> reset the caller's frame.
Both true, and the Appel/Shao paper (``An Empirical Study of Stack
vs. Heap Cost for Lamguages with Closures'') clearly shows these
effects. Nevertheless, the advantages of the heap-based allocation
seem to make up for that on average.
> 3) References to parameters when the reference follows a non-tail call
> (because frames can't be extended in place, you actually have to chain
> the various parts of a function's frame, each part corresponding
> to a non-tail call in the function's body).
I didn't quite follow. Parameters are always passed in
registers... so why does parameter access slow down?
-Matthias