[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CPS in Parrot (was: A plea for a new old language)

At 4:47 PM -0700 8/5/03, Michael Vanier wrote:
>Also, Dan doesn't mention segmented stack architectures that are
>essentially a linked list of stacklets of finite size.  With this you can
>avoid most of the overhead of both stack copying (on the one hand) and
>heap-allocated individual frames (on the other hand).  PLT scheme uses this
>system.  There is a paper on this, but I can't find it right now.

A linked list of fixed sized stack frames is a nice thing, assuming 
your activation information'll fit into them. (They are annoying when 
the system stack is implemented this way if you're not in control all 
the way to the bottom, as we've found) That's not too tough if you 
map each frame to a page of memory, though in these days of 8K memory 
pages that can be a bit wasteful. Still, the wins from 
hardware-assisted COW and suchlike tricks will probably 
counterbalance this, and its not like control often goes so deep that 
it's an issue. (And when it does, it's often via tail calls of some 
sort, so the impact is less) Besides, systems with 8K pages generally 
have more than enough memory handy.

Variable-sized stack frames aren't too bad with a reasonably sized 
free memory pool. If you anchor the frames with a fixed-sized 
structure and have a copying collector, allocating a frame's 
reasonably cheap--you pull a struct off the free list and grab a hunk 
of memory off the top of the free pool, which is maybe two dozen 
instructions if nothing goes wrong and you inline everything. Not 
nearly as cheap as a stack offset twiddle, but not horrible, and for 
parrot's purposes a sub/method call is so darned expensive anyway, 
relatively speaking, that this isn't an issue, though I don't know 
that I'd want to do it in a compiler for a high-performance language.

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan@sidhe.org                         have teddy bears and even
                                       teddy bears get drunk