1.0.14.30: don't construct obsolete instances
commita6bd77d792d22785860bd082d55692f4a1c65fd7
authorChristophe Rhodes <csr21@cantab.net>
Sat, 16 Feb 2008 10:34:45 +0000 (16 10:34 +0000)
committerChristophe Rhodes <csr21@cantab.net>
Sat, 16 Feb 2008 10:34:45 +0000 (16 10:34 +0000)
tree307d161354345804398c494f29680ed6fb270318
parent47ccd7d89c0266c2d7716ae162cd6205e2c05809
1.0.14.30: don't construct obsolete instances
The CTOR make-instance optimization machinery closes over the
class wrapper of the class in question; however, there are
code paths that cause wrappers to be invalidated without causing
all constructors to be recomputed: for instance, the
redefinition of a superclass, or calling
MAKE-INSTANCES-OBSOLETE.  This would mean that the CTORs would
create obsolete instances, which would instantly trap, showing
up as slowness in CLOS-heavy code.

Problem and fix largely identified by Andy Hefner in
<http://paste.lisp.org/display/55689>.
NEWS
src/pcl/ctor.lisp
tests/ctor.impure.lisp [new file with mode: 0644]
version.lisp-expr