1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-23 22:20:24 -08:00

fix &optional args

This commit is contained in:
Andrea Corallo 2019-08-11 15:04:38 +02:00 committed by Andrea Corallo
parent b6e7df0926
commit 0c33a8ff4b

View 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))