Update of /cvsroot/sbcl/sbcl
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv12240
18.104.22.168: faster ADD-METHOD to PRINT-OBJECT
The basic idea here is reducing the number of functions whose
discriminating function and effective method cache are
precomputed; in particular, to reduce the number where users can
both legitimately define their own methods, and where a large
number of methods will be applicable to different classes.
The biggest culprit in both of those categories is the
PRINT-OBJECT generic function, which would recompute its entire
dispatch structure every time any method was added or removed.
So, turn off precomputation for names in the CL package; deal
with the bootstrap metacircles that that provokes; special-case
PRINT-OBJECT in COMPUTE-DISCRIMINATING-FUNCTION so that we can
always print certain critical pieces of infrastructure;
also, warn the user if they break our assumptions in
Fix one broken "how did it ever work" test.
RCS file: /cvsroot/sbcl/sbcl/NEWS,v
retrieving revision 1.1353
retrieving revision 1.1354
diff -u -d -r1.1353 -r1.1354
--- NEWS 5 Jun 2008 08:47:39 -0000 1.1353
+++ NEWS 9 Jun 2008 21:49:15 -0000 1.1354
@@ -19,6 +19,8 @@
* optimization: file compiler is now able to coalesce non-circular
lists, non-base strings, and bit-vectors. Additionally, constants
are never referenced through SYMBOL-VALUE at runtime.
+ * optimization: code defining methods on PRINT-OBJECT (and other
+ generic functions in the COMMON-LISP package) now loads faster.
* bug fix: EAI_NODATA is deprecated since RFC 3493. Stop using it
* bug fix: if COMPILE-FILE aborts due to an unwind, the partial
RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v
retrieving revision 1.3991
retrieving revision 1.3992
diff -u -d -r1.3991 -r1.3992
--- version.lisp-expr 6 Jun 2008 12:00:23 -0000 1.3991
+++ version.lisp-expr 9 Jun 2008 21:49:15 -0000 1.3992
@@ -17,4 +17,4 @@
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)