Subject: Re: bug#15876: 24.3.50; Highly degraded performance between rev 114715 and 115006

From: Stefan Monnier <[email-masked]>
Date: Fri, 13 Dec 2013 11:50:49 -0500

>  . I also tried a different approach: compact only those font-entities
>    that don't match any font that is still used by some face on some
>    frame.  (I used font_match_p for that.)  This seems to work, except
>    that font_match_p is evidently not safe enough to be used in the
>    middle of GC -- I got crashes a few times.  When it did work, it
>    again prevented the compaction, as if the compacting code were not
>    there at all.

Maybe a better way goes along the lines of:
- every time we use a font, we set an "in_use" bit.
- every now and then (ha ha!), we let the GC collect fonts that don't
  have their "in_use" bit set.
The now-and-then could be something as "at least N seconds passed and
we've done at least M garbage collections".

Still, the effort doesn't seem worth the trouble, since the benefit is
too small (only appears in pathological cases).

        Stefan