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

Reply via email to