Luke Palmer <[EMAIL PROTECTED]> wrote: > Leopold Toetsch writes: >> Moving the needs_early_DOD_FLAG out of the arena_flags is suboptimal >> (and probably the reason for the 5% slowdown for the eager case). Now the >> relevant flags is the high_priority_DOD_FLAG. If I get the patch right, >> it gets set on the PMC itself and all its parents.
> Hmm. Interesting that I did that, as I don't understand arena DOD flags :-) > I would appreciate a short explanation, thanks. Some additional information beyond docs/memory_internals.pod: I expect by far more plain scalars being around then aggregates. Plain scalars (w/o properties attached) don't have the PMC_EXT structure, so they don't have the next_for_GC pointer either. During DOD now only the relevant bits in the arena are touched (or pulled into the processors caches) if such a plain scalar is marked live. The PMCs memory itself isn't touched and not pulled into the caches. All non-plain scalars and aggregates have the is_special_PMC bit set and are marked by chaining them with the next_for_GC pointer, so that contained PMCs get marked too. This of course needs that the PMC and the PMC_EXT structure is pulled into the caches. This reduced cache misses during DOD to almost zero. > Just as a note, you can expect even more delays to the maintainence of > this patch. My job just picked up its pace, and I've got to have this > compiler cracking at full-featuredness in the next week. I'm not > against somebody else maintaining the patch in the meantime :-) I'll go through it and apply it eventually. > Luke leo