]> git.eshelyaron.com Git - emacs.git/commitdiff
Optimise `apply` with `cons` in tail argument
authorMattias Engdegård <mattiase@acm.org>
Thu, 12 Jan 2023 13:07:45 +0000 (14:07 +0100)
committerMattias Engdegård <mattiase@acm.org>
Mon, 16 Jan 2023 18:42:31 +0000 (19:42 +0100)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-apply): Transform

  (apply F ... (cons X Y)) -> (apply F ... X Y)

This pattern is seen both in hand-written code and in backquote
expansions.

lisp/emacs-lisp/byte-opt.el

index d7a0d851e01709b14bddcc90681f2135935c4c3e..039cebedb44213eaf7e893e2c3834cd5f0e00674 100644 (file)
@@ -1380,6 +1380,9 @@ See Info node `(elisp) Integer Basics'."
            ;; (apply F ... (list X Y ...)) -> (funcall F ... X Y ...)
            ((eq (car-safe last) 'list)
             `(funcall ,fn ,@(butlast (cddr form)) ,@(cdr last)))
+           ;; (apply F ... (cons X Y)) -> (apply F ... X Y)
+           ((eq (car-safe last) 'cons)
+            (append (butlast form) (cdr last)))
            (t form)))
       form)))