0.8.12.32: Fix the performance degradation in DEFCLASS caused
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 14 Jul 2004 14:10:16 +0000 (14:10 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 14 Jul 2004 14:10:16 +0000 (14:10 +0000)
           by package locks.
            * While at it, correct WITHOUT-PACKAGE-LOCKS to
                have identical semantics both with and without
                :SB-PACKAGE-LOCKS in features.
            * Yay for Boinkmarks for catching this.

src/code/early-package.lisp
src/pcl/defclass.lisp
version.lisp-expr

index c17ad6e..a1f24bb 100644 (file)
 (defmacro without-package-locks (&body body)
   #!+sb-doc
   "Ignores all runtime package lock violations during the execution of
-body. Body can begin with declarations."
-  #!-sb-package-locks
-  `(progn ,@body)
-  #!+sb-package-locks
-  `(let ((*ignored-package-locks* t))
+body. Body can begin with declarations."  
+  `(let (#!+sb-package-locks (*ignored-package-locks* t))
     ,@body))
 
 (!defun-from-collected-cold-init-forms !early-package-cold-init)
index f525d4a..09bf800 100644 (file)
           (let ((defclass-form
                    `(progn
                      (let ,(mapcar #'cdr *initfunctions-for-this-defclass*)
-                       (with-single-package-locked-error
-                           (:symbol ',name "defining ~A as a class")
-                         (%compiler-defclass ',name
-                                             ',*readers-for-this-defclass*
-                                             ',*writers-for-this-defclass*
-                                             ',*slot-names-for-this-defclass*)
-                         (load-defclass ',name
-                                        ',metaclass
-                                        ',supers
-                                        (list ,@canonical-slots)
-                                        (list ,@(apply #'append
-                                                       (when defstruct-p
-                                                         '(:from-defclass-p t))
-                                                       other-initargs))))))))
+                       (%compiler-defclass ',name
+                                           ',*readers-for-this-defclass*
+                                           ',*writers-for-this-defclass*
+                                           ',*slot-names-for-this-defclass*)
+                       (load-defclass ',name
+                                      ',metaclass
+                                      ',supers
+                                      (list ,@canonical-slots)
+                                      (list ,@(apply #'append
+                                                     (when defstruct-p
+                                                       '(:from-defclass-p t))
+                                                     other-initargs)))))))
             (if defstruct-p
                (progn
                  ;; FIXME: (YUK!) Why do we do this? Because in order
index a2d1d54..a7cc2a8 100644 (file)
@@ -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".)
-"0.8.12.31"
+"0.8.12.32"