From: Andrea Corallo Date: Sun, 11 Aug 2019 13:04:38 +0000 (+0200) Subject: fix &optional args X-Git-Tag: emacs-28.0.90~2727^2~1292 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0c33a8ff4bd20fcb5f2d4d2a27907c77804f4e42;p=emacs.git fix &optional args --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index a35fbd0fec5..3ce35983828 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -708,18 +708,20 @@ the annotation emission." (comp-pass (make-comp-limplify :sp -1 :frame (comp-new-frame frame-size))) - (args-min (comp-args-gen-min (comp-func-args func))) + (args (comp-func-args func)) + (args-min (comp-args-gen-min args)) (comp-block ())) ;; Prologue (comp-emit-block 'entry) (comp-emit-annotation (concat "Lisp function: " (symbol-name (comp-func-symbol-name func)))) - (if (comp-args-p (comp-func-args func)) - (cl-loop for i below (comp-args-max (comp-func-args func)) + (if (comp-args-p args) + (cl-loop for i below (comp-args-max args) do (cl-incf (comp-sp)) do (comp-emit `(setpar ,(comp-slot) ,i))) - (comp-emit `(ncall-prolog ,args-min)) - (cl-incf (comp-sp) (1+ args-min))) + (let ((nonrest (comp-nargs-nonrest args))) + (comp-emit `(ncall-prolog ,nonrest)) + (cl-incf (comp-sp) (1+ nonrest)))) ;; Body (comp-emit-block 'bb_1) (mapc #'comp-limplify-lap-inst (comp-func-lap func))