Leopold Toetsch wrote: > Peter Gibbs wrote: > Did you look at indexed access, shift, unshift, splice ;-) I have simply modified classes/array.pmc, which does not yet implement shift or unshift; grey aims to provide alternative implementations, rather than add new functionality. However, since Dan has suggested adding this to CVS as an alternative array implementation, I will add the extra functionality shortly.
> > In addition, the mark_used function in dod has been > > changed to not add PMCs to the next_for_GC list if > > they do not need further processing (i.e. none of the > > is_PMC_ptr, is_buffer_ptr or custom_mark flags > > is set) > > > This would give a good patch for CVS too. This code has no dependencies on anything else in grey, so I will submit a separate patch for it. > > Finally, the number of used PMCs within each arena > > is counted during the marking phase, and arenas > > with used = allocated are skipped during the free > > phase; > > > This would make sense for many small arenas. With current 256 objects > per arena, I makes only sense for objects, which allocate 512 or more in > one go - but yes why not. My code for this requires that mark_used be able to identify the arena containing the PMC; currently, CVS parrot cannot do this, as far as I can see. -- Peter Gibbs EmKel Systems