|Bill Allombert on Thu, 16 Dec 2004 23:56:06 +0100|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
|Re: Two stacks at once|
On Thu, Dec 16, 2004 at 01:52:51PM -0800, Ilya Zakharevich wrote: > 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. Sure, but some computations require more than 1Gb of stack. Optimising the size of each stacks might not be easy. > > 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? It will not hurt, but it reduces the situation where a multi-stack approach can be used. > > 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. We would still need to identify what routine could benefit from the scheme and to update them. Do you have some candidates ? > > 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? The idea is to make the garbage collection unfrequently so that the overall cost is negligible. GP handles a lot of very small objects that span 3 or 4 words, so a copy can be less than 6 assignments. That said, the idea of several stacks has a lot of merit, but I don't think we can retrofit it at this stage without major though. Cheers, Bill.