0.9.7.16:
authorChristophe Rhodes <csr21@cam.ac.uk>
Mon, 5 Dec 2005 18:01:27 +0000 (18:01 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Mon, 5 Dec 2005 18:01:27 +0000 (18:01 +0000)
commitfbde18e9b7d8e67e24f628638be4f293cb128101
tree561e5478df42a2652580da465d1765d0f356e2aa
parent3f13400e4297ea4b572da50e5fc926b2c3a3f07b
0.9.7.16:
More PCL smallification.
... the ACCESSOR-SLOT-VALUE optimization creates a generic
function (using load-time-value) when it sees
a form like (slot-value x 'constant).  That's fine,
but...
... these generic functions are also created at class
initialization time, three per slot.  This hurts
now that we're creating classes eagerly (so that the
mop functionality works) as even condition classes
and structure classes cause these gfs to come into
being.
... so, rearrange things so that only those generic functions
which are needed are created.  Never create one with
a slot-missing method, as the automatically-generated
method will fall through to the full call and get there
eventually, anyway.
... this causes slot-missing from slot-value outside of methods
to be slower if (and only if) no slot of that name
exists in the image anywhere.  We could potentially
improve fall-through-to-slot-missing performance.

(this shaves off 2.5Mb from sbcl.core on my x86)
src/pcl/braid.lisp
src/pcl/slots-boot.lisp
src/pcl/std-class.lisp
src/runtime/gc-common.c
version.lisp-expr