X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fcombin.lisp;h=201620b089dad296681917eb86205d3e32adf10a;hb=1dc38285834db2d374a156a4f68b19096341deb3;hp=c65f3900c5aaa2ee216663cd921c72bf9140a12b;hpb=3357d40adfad43ce33a84cdf888977299241f8c8;p=sbcl.git diff --git a/src/pcl/combin.lisp b/src/pcl/combin.lisp index c65f390..201620b 100644 --- a/src/pcl/combin.lisp +++ b/src/pcl/combin.lisp @@ -36,9 +36,9 @@ (let* ((pv-wrappers (when pv-table (pv-wrappers-from-all-wrappers pv-table wrappers))) - (pv-cell (when (and pv-table pv-wrappers) - (pv-table-lookup pv-table pv-wrappers)))) - (values mf t fmf pv-cell)) + (pv (when (and pv-table pv-wrappers) + (pv-table-lookup pv-table pv-wrappers)))) + (values mf t fmf pv)) (values (or mf (if (listp method) (bug "early method with no method-function") @@ -120,7 +120,7 @@ (defun make-emf-from-method (method cm-args &optional gf fmf-p method-alist wrappers) - (multiple-value-bind (mf real-mf-p fmf pv-cell) + (multiple-value-bind (mf real-mf-p fmf pv) (get-method-function method method-alist wrappers) (if fmf (let* ((next-methods (car cm-args)) @@ -132,10 +132,10 @@ (default (cons nil nil)) (value (method-plist-value method :constant-value default))) (if (eq value default) - (make-fast-method-call :function fmf :pv-cell pv-cell + (make-fast-method-call :function fmf :pv pv :next-method-call next :arg-info arg-info) (make-constant-fast-method-call - :function fmf :pv-cell pv-cell :next-method-call next + :function fmf :pv pv :next-method-call next :arg-info arg-info :value value))) (if real-mf-p (flet ((frob-cm-arg (arg) @@ -216,10 +216,9 @@ (defun expand-effective-method-function (gf effective-method &optional env) (declare (ignore env)) - (multiple-value-bind (nreq applyp metatypes nkeys arg-info) + (multiple-value-bind (nreq applyp) (get-generic-fun-info gf) - (declare (ignore nreq nkeys arg-info)) - (let ((ll (make-fast-method-call-lambda-list metatypes applyp)) + (let ((ll (make-fast-method-call-lambda-list nreq applyp)) (check-applicable-keywords (when (and applyp (gf-requires-emf-keyword-checks gf)) '((check-applicable-keywords)))) @@ -233,8 +232,8 @@ (long-method-combination-args-lambda-list combin)))))) (cond (error-p - `(lambda (.pv-cell. .next-method-call. &rest .args.) - (declare (ignore .pv-cell. .next-method-call.)) + `(lambda (.pv. .next-method-call. &rest .args.) + (declare (ignore .pv. .next-method-call.)) (declare (ignorable .args.)) (flet ((%no-primary-method (gf args) (apply #'no-primary-method gf args)) @@ -243,7 +242,7 @@ (declare (ignorable #'%no-primary-method #'%invalid-qualifiers)) ,effective-method))) (mc-args-p - (let* ((required (make-dfun-required-args metatypes)) + (let* ((required (make-dfun-required-args nreq)) (gf-args (if applyp `(list* ,@required (sb-c::%listify-rest-args @@ -252,14 +251,14 @@ .dfun-more-count.))) `(list ,@required)))) `(lambda ,ll - (declare (ignore .pv-cell. .next-method-call.)) + (declare (ignore .pv. .next-method-call.)) (let ((.gf-args. ,gf-args)) (declare (ignorable .gf-args.)) ,@check-applicable-keywords ,effective-method)))) (t `(lambda ,ll - (declare (ignore ,@(if error-p ll '(.pv-cell. .next-method-call.)))) + (declare (ignore ,@(if error-p ll '(.pv. .next-method-call.)))) ,@check-applicable-keywords ,effective-method)))))) @@ -310,7 +309,7 @@ (call-method (let ((gensym (get-effective-method-gensym))) (values (make-emf-call - metatypes applyp gensym + (length metatypes) applyp gensym (make-effective-method-fun-type generic-function form method-alist-p wrappers-p)) (list gensym)))) @@ -319,7 +318,7 @@ (type (make-effective-method-list-fun-type generic-function form method-alist-p wrappers-p))) (values `(dolist (emf ,gensym nil) - ,(make-emf-call metatypes applyp 'emf type)) + ,(make-emf-call (length metatypes) applyp 'emf type)) (list gensym)))) (check-applicable-keywords (values `(check-applicable-keywords .keyargs-start. @@ -420,7 +419,7 @@ (dolist (m applicable-methods) (let ((qualifiers (if (listp m) (early-method-qualifiers m) - (method-qualifiers m)))) + (safe-method-qualifiers m)))) (cond ((null qualifiers) (primary m)) ((cdr qualifiers) (invalid generic-function combin m))