On Fri, Aug 19, 2005 at 11:26:46AM +0200, Tels wrote: > -----BEGIN PGP SIGNED MESSAGE----- > > Moin, > > Anyway, this work sounds good. Just one small detail: > > + > + for (i=0; i<17; i++) { > + S_free_arena(aTHX_ (void**) PL_body_arenaroots[i]); > + PL_body_arenaroots[i] = 0; > + PL_body_roots[i] = 0; > + } > > > The 17 should be defined somewhere. It might change someday :)
I wasn't sure why the 17 was 17 and not 16. Anyway, nice. This seems a good way to go. It wasn't directly what I had been thinking about, and it had never occurred to me to put the arena heads into an array. That's going to reduce the size of the switch statements nicely. What I had been wondering was whether the arena roots (or at least all bar sv_arenaroot) can all be replaced by a single pointer, given that all that the PL_*_arenaroot pointers point to are structurally identical linked lists of things to free. But if that change works, it can be made after the change you're working on here goes in. Nicholas Clark