X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fbyte-interp.lisp;h=a890b0ada0126d8f522cce1347f8b94209312d9c;hb=a8fa26a6e9804d3548f5bca9361a91345a689099;hp=156ded443562c6dcf8b24212559369e77e34b460;hpb=df387651d10ab0547c75e54c16fe27607a5bea99;p=sbcl.git diff --git a/src/code/byte-interp.lisp b/src/code/byte-interp.lisp index 156ded4..a890b0a 100644 --- a/src/code/byte-interp.lisp +++ b/src/code/byte-interp.lisp @@ -27,19 +27,19 @@ (etypecase x (simple-byte-function `(function ,(make-list (simple-byte-function-num-args x) - :initial-element 't) + :initial-element t) *)) (hairy-byte-function (collect ((res)) (let ((min (hairy-byte-function-min-args x)) (max (hairy-byte-function-max-args x))) - (dotimes (i min) (res 't)) + (dotimes (i min) (res t)) (when (> max min) (res '&optional) (dotimes (i (- max min)) - (res 't)))) + (res t)))) (when (hairy-byte-function-rest-arg-p x) - (res '&rest 't)) + (res '&rest t)) (ecase (hairy-byte-function-keywords-p x) ((t :allow-others) (res '&key) @@ -1198,19 +1198,20 @@ (type stack-pointer more-args-start)) (cond ((not (hairy-byte-function-keywords-p xep)) - (assert restp) + (aver restp) (setf (current-stack-pointer) (1+ more-args-start)) (setf (eval-stack-ref more-args-start) rest)) (t (unless (evenp more-args-supplied) (with-debugger-info (old-component ret-pc old-fp) - (error "odd number of keyword arguments"))) - ;; If there are keyword args, then we need to leave the - ;; defaulted and supplied-p values where the more args - ;; currently are. There might be more or fewer. And also, - ;; we need to flatten the parsed args with the defaults - ;; before we scan the keywords. So we copy all the more - ;; args to a temporary area at the end of the stack. + (error "odd number of &KEY arguments"))) + ;; If there are &KEY args, then we need to leave + ;; the defaulted and supplied-p values where the + ;; more args currently are. There might be more or + ;; fewer. And also, we need to flatten the parsed + ;; args with the defaults before we scan the + ;; keywords. So we copy all the more args to a + ;; temporary area at the end of the stack. (let* ((num-more-args (hairy-byte-function-num-more-args xep)) (new-sp (+ more-args-start num-more-args))