Ilya Zakharevich on Thu, 16 Dec 2004 22:54:36 +0100


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

Re: Two stacks at once


On Thu, Dec 16, 2004 at 02:21:27PM +0100, Bill Allombert wrote:
> 1) Stack overflow might happen in either stacks, so we have to allocate
> a suitable amount for each stacks. 

In practice, I think that 2 stacks of 3M should work as well as one of
4M; so it is a price of 2M for the default configuration.  And if it
is a custom-made stack size, one could custom-modify it without a
large pain.  Given the memory situation of today, I do not think that
extra 30% of virtual memory would matter.

> 2) We cannot allow recursive objects in a stack to include pointers to the 
> other stack, else we will not be able to garbage collect.

You get anything on another stack only if you ask for it.  So how it
can hurt?

> 1) Given 2) above, making sure objects are created in the correct stack
> without requiring extra copy can be painful.

My hope was that no change to existing code is *needed*.  One *can*
use stack switching to optimize performance.  If it is used often
enough, one gets the "stack randomization effect" described above,
when you may use each-stack-of-lower size for the same calculation.

> 2) Most of the time lazy garbage collecting is nearly as good as a
> multi-stack approach.  Karim have developed fast gerepile alternative
> that have nearly the same cost as a copy.

How a copy can be as good as 6 assignments?

> 3) Switching stacks has a cost.

See above.

Hope this helps,
Ilya