]> git.eshelyaron.com Git - emacs.git/commitdiff
fix &optional args
authorAndrea Corallo <andrea_corallo@yahoo.it>
Sun, 11 Aug 2019 13:04:38 +0000 (15:04 +0200)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:33:59 +0000 (11:33 +0100)
lisp/emacs-lisp/comp.el

index a35fbd0fec54c3a66e777412ca845706678d3038..3ce35983828b5b048874bb1f79a39986009b6ef8 100644 (file)
@@ -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))