From 0c33a8ff4bd20fcb5f2d4d2a27907c77804f4e42 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 11 Aug 2019 15:04:38 +0200 Subject: [PATCH] fix &optional args --- lisp/emacs-lisp/comp.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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)) -- 2.39.5