X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpcl%2Fmethods.lisp;h=8db6b37c62831236b4eb0a6a27308c7321e13e55;hb=b03ad9b03a3cfec37db9bf6bb0912725959335e3;hp=91e746e481e86f10a817626a399ec8ce98d35b4d;hpb=176fec4cc52018f811f343f339c79fbf58ab1838;p=sbcl.git diff --git a/src/pcl/methods.lisp b/src/pcl/methods.lisp index 91e746e..8db6b37 100644 --- a/src/pcl/methods.lisp +++ b/src/pcl/methods.lisp @@ -1043,22 +1043,22 @@ (defun generate-discrimination-net (generic-function methods types sorted-p) (let* ((arg-info (gf-arg-info generic-function)) - (c-a-m-emf-std-p (gf-info-c-a-m-emf-std-p arg-info)) + (c-a-m-emf-std-p (gf-info-c-a-m-emf-std-p arg-info)) (precedence (arg-info-precedence arg-info))) (generate-discrimination-net-internal generic-function methods types (lambda (methods known-types) (if (or sorted-p - (and c-a-m-emf-std-p - (block one-order-p - (let ((sorted-methods nil)) - (map-all-orders - (copy-list methods) precedence - (lambda (methods) - (when sorted-methods (return-from one-order-p nil)) - (setq sorted-methods methods))) - (setq methods sorted-methods)) - t))) + (and c-a-m-emf-std-p + (block one-order-p + (let ((sorted-methods nil)) + (map-all-orders + (copy-list methods) precedence + (lambda (methods) + (when sorted-methods (return-from one-order-p nil)) + (setq sorted-methods methods))) + (setq methods sorted-methods)) + t))) `(methods ,methods ,known-types) `(unordered-methods ,methods ,known-types))) (lambda (position type true-value false-value) @@ -1359,9 +1359,7 @@ (make-dfun-lambda-list metatypes applyp) (make-fast-method-call-lambda-list metatypes applyp)))) (multiple-value-bind (cfunction constants) - (get-fun1 `(,(if function-p - 'instance-lambda - 'lambda) + (get-fun1 `(lambda ,arglist ,@(unless function-p `((declare (ignore .pv-cell.