Dan Sugalski wrote:
At 10:08 PM +0100 1/3/03, Leopold Toetsch wrote:- No stackwalk,
I think we're always going to have to walk the stack, no matter how much I'd rather not. It's an expensive walk too, alas.
This depends on. I think a mixed strategy of:
- code reordering (e.g. $1=pmc_new_noinit(); pmc->vtable->init() instead of pmc=new_pmc() like done in setprop
- passing a **dest_ptr for e.g. string_concat
- disabling DOD (with optional DOD run befor, if header count is below wanted header count, e.g. for clone)
- and may be some active anchoring to the root set
will do it.
- a hack to reduce DOD runs by some amount, helping for this test,
Twiddling the default numbers seems reasonable, though doing it for this one test is silly.
Of course. But the "skip" thingy is different. It triese to detect, if we are allocating only and skips the next DOD run for this case.
Instead of twiddling some number we need:
Dynamic feedback on the allocation & GC system is definitely in order. We should find a victim^Wvolunteer to do this--it could be a very interesting project.
- statistics need to be reworked,
Hrm. We should get at least the allocation numbers right, though I do wonder at the impact of keeping buffer/pmc allocation counts. (Yeah, I know, I added that code, as I thought the stats would be useful for GC feedback)I did add num_free_objects in the fast path with very little impact on performance. I'll rearrange current interpinfo interface and move it to interpreter.c. Numbers like active_PMCs can be calculated on demand.
leo