X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdfun.lisp;h=95c2c3abc92de444b37ddcb7bf32d55669368a0c;hb=475c832b081651e66ad9446d4852c62086f5e740;hp=0879c322c7f46586d48fca0fd2730ba21ba52e06;hpb=4aa82530da00c41e2751671ac75eda2d19a173a0;p=sbcl.git diff --git a/src/pcl/dfun.lisp b/src/pcl/dfun.lisp index 0879c32..95c2c3a 100644 --- a/src/pcl/dfun.lisp +++ b/src/pcl/dfun.lisp @@ -112,7 +112,7 @@ And so, we are saved. (let* ((generator-entry (assq generator *dfun-constructors*)) (args-entry (assoc args (cdr generator-entry) :test #'equal))) (if (null *enable-dfun-constructor-caching*) - (apply (symbol-function generator) args) + (apply (name-get-fdefinition generator) args) (or (cadr args-entry) (multiple-value-bind (new not-best-p) (apply (symbol-function generator) args) @@ -161,15 +161,12 @@ And so, we are saved. (eq (caddr args-entry) system)) (when system (setf (caddr args-entry) system)) (gather1 - (make-top-level-form `(precompile-dfun-constructor - ,(car generator-entry)) - '(:load-toplevel) - `(load-precompiled-dfun-constructor - ',(car generator-entry) - ',(car args-entry) - ',system - ,(apply (symbol-function (car generator-entry)) - (car args-entry)))))))))))) + `(load-precompiled-dfun-constructor + ',(car generator-entry) + ',(car args-entry) + ',system + ,(apply (name-get-fdefinition (car generator-entry)) + (car args-entry))))))))))) ;;; When all the methods of a generic function are automatically generated ;;; reader or writer methods a number of special optimizations are possible.