X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fvector.lisp;h=e6bfa4b28a9288be43a7d5ca5ab7efacb670c449;hb=1b650be8b800cf96e2c268ae317fb26d0bf36827;hp=26cc57056a967776c7b80158c606752ed4f4adff;hpb=2217cdb364e8b48c187b085895bb2a5cbdbd9622;p=sbcl.git diff --git a/src/pcl/vector.lisp b/src/pcl/vector.lisp index 26cc570..e6bfa4b 100644 --- a/src/pcl/vector.lisp +++ b/src/pcl/vector.lisp @@ -232,8 +232,7 @@ (pv-cell (cons pv calls)) (new-cache (fill-cache cache pv-wrappers pv-cell))) (unless (eq new-cache cache) - (setf (pv-table-cache pv-table) new-cache) - (free-cache cache)) + (setf (pv-table-cache pv-table) new-cache)) pv-cell)))) (defun make-pv-type-declaration (var) @@ -1014,8 +1013,8 @@ ;;; body given, or return NIL if no %METHOD-NAME declaration is found. (defun body-method-name (body) (multiple-value-bind (real-body declarations documentation) - (parse-body body nil) - (declare (ignore documentation real-body)) + (parse-body body) + (declare (ignore real-body documentation)) (let ((name-decl (get-declaration '%method-name declarations))) (and name-decl (destructuring-bind (name) name-decl @@ -1076,8 +1075,9 @@ req-args))) `(list* :fast-function - (named-lambda - ,(or (body-method-name body) '.method.) ; function name + (,(if (body-method-name body) 'named-lambda 'lambda) + ,@(when (body-method-name body) + (list (body-method-name body))) ; function name (.pv-cell. .next-method-call. ,@args+rest-arg) ; function args ;; body of the function (declare (ignorable .pv-cell. .next-method-call.))