Douglas Katzman wrote:
> Methinks I undersold my previous globaldb patch.
> I measured the effect on compilation speed for some of the largest files
> in sbcl source code (and QPX) on my workstation.
> Compiling 'x86-vm/insts.lisp' and 'compiler/srctran' sped up by > 5%
> On a Macbook its about 3.5% speedup. Timing code is enclosed below.
> In addition of course this partially solves the accidental garbage
> permanence and inability to clear some info as was the original intent.
> Changes in this version:
> * Packed infos iteration is made easier.
> * Fixes "FIXME: This code is sort of nasty."
> * Eliminates " ... but this is still a weird thing to do"
> * Genesis dumps info-vectors, allowing funcall of names in cold-init
> * Supports clear-info-value on a compact environment.
Nice. Sadly, acute lack of time means I can't give this patch (and many
of your older ones) the attention it deserves. If no one else can take
care of it, I'm hoping to make some time this October, either to take a
good look at the patches and commit them or at least push them on
launchpad and make sure they're not forgotten forever.
> I'm not sure what to do about un-reclaimable complicated names.
> Weak pointers in a volatile/compact env aren't a perfect solution
> because it's possible to construct names out of their pieces, such as a
> defmethod named by a gensym, as long you kept the gensym.
I agree that's not perfect, but inserting weak pointers already seems
better than hanging on to otherwise unreachable keys.