From 0b9bec6863e138efee77c2948c355b53951e6d18 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 27 Oct 2019 17:13:03 +0100 Subject: [PATCH] fix comp-emit-narg-prologue --- lisp/emacs-lisp/comp.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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)))) -- 2.39.5