emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 2a85d7a07c 1/2: Optimise `apply` with `cons` in tail argument


From: Mattias Engdegård
Subject: master 2a85d7a07c 1/2: Optimise `apply` with `cons` in tail argument
Date: Mon, 16 Jan 2023 13:44:32 -0500 (EST)

branch: master
commit 2a85d7a07c16dd854490b5eff72930d4a80b1415
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Optimise `apply` with `cons` in tail argument
    
    * 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 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index d7a0d851e0..039cebedb4 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -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)))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]