X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdfun.lisp;h=2b84a1856bbe75bbc4ea6c197393751ad0617082;hb=f3f677703e37f5a335b3be7fa64f7748ad969517;hp=bcce170e2f98f8bc606348fca01534c527a15594;hpb=21ff212864ff015b34b0cdc82b40c990e71a5c71;p=sbcl.git diff --git a/src/pcl/dfun.lisp b/src/pcl/dfun.lisp index bcce170..2b84a18 100644 --- a/src/pcl/dfun.lisp +++ b/src/pcl/dfun.lisp @@ -209,11 +209,11 @@ Except see also BREAK-VICIOUS-METACIRCLE. -- CSR, 2003-05-28 (funcallable-standard-instance-access object location) (standard-instance-access object location)))) (when (eq +slot-unbound+ value) - (error "~@" + (error "~@" slot-name class object)) value) - (error "~@" + (error "~@" slot-name class object)))) (defun standard-slot-value/gf (gf slot-name) @@ -1501,7 +1501,20 @@ Except see also BREAK-VICIOUS-METACIRCLE. -- CSR, 2003-05-28 (defun cpl-or-nil (class) (if (eq *boot-state* 'complete) - (when (class-finalized-p class) + ;; KLUDGE: why not use (slot-boundp class + ;; 'class-precedence-list)? Well, unfortunately, CPL-OR-NIL is + ;; used within COMPUTE-APPLICABLE-METHODS, including for + ;; SLOT-BOUNDP-USING-CLASS... and the available mechanism for + ;; breaking such nasty cycles in effective method computation + ;; only works for readers and writers, not boundps. It might + ;; not be too hard to make it work for BOUNDP accessors, but in + ;; the meantime we use an extra slot for exactly the result of + ;; the SLOT-BOUNDP that we want. (We cannot use + ;; CLASS-FINALIZED-P, because in the process of class + ;; finalization we need to use the CPL which has been computed + ;; to cache effective methods for slot accessors.) -- CSR, + ;; 2004-09-19. + (when (cpl-available-p class) (class-precedence-list class)) (early-class-precedence-list class)))