From: Andrea Corallo Date: Sun, 27 Oct 2019 16:13:03 +0000 (+0100) Subject: fix comp-emit-narg-prologue X-Git-Tag: emacs-28.0.90~2727^2~1052 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b9bec6863e138efee77c2948c355b53951e6d18;p=emacs.git fix comp-emit-narg-prologue --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 1891398c149..abcddda3808 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -1008,14 +1008,17 @@ the annotation emission." (comp-make-curr-block bb (comp-sp)) (comp-emit `(set-args-to-local ,(comp-slot-n i))) (comp-emit '(inc-args)) - finally (comp-emit '(jump entry_rest_args))) + finally (comp-emit '(jump entry_rest_args))) (when (not (= minarg nonrest)) (cl-loop for i from minarg below nonrest + for bb = (intern (format "entry_fallback_%s" i)) + for next-bb = (if (= (1+ i) nonrest) + 'entry_rest_args + (intern (format "entry_fallback_%s" (1+ i)))) do (comp-with-sp i - (comp-make-curr-block (intern (format "entry_fallback_%s" i)) - (comp-sp)) - (comp-emit-set-const nil)) - finally (comp-emit '(jump entry_rest_args)))) + (comp-make-curr-block bb (comp-sp)) + (comp-emit-set-const nil) + (comp-emit `(jump ,next-bb))))) (comp-make-curr-block 'entry_rest_args (comp-sp)) (comp-emit `(set-rest-args-to-local ,(comp-slot-n nonrest))))