emacs-diffs
[Top][All Lists]
Advanced

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

master eb0e93478e 1/3: Transform (list) -> nil in source optimiser


From: Mattias Engdegård
Subject: master eb0e93478e 1/3: Transform (list) -> nil in source optimiser
Date: Sat, 16 Jul 2022 06:32:27 -0400 (EDT)

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

    Transform (list) -> nil in source optimiser
    
    This optimisation is already done in the code generator but performing
    it at this earlier stage is a useful normalising step that uncovers
    more opportunities.
    
    * lisp/emacs-lisp/byte-opt.el (byte-optimize-list): New.
---
 lisp/emacs-lisp/byte-opt.el | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index a24a504456..5a138e9fee 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1287,6 +1287,11 @@ See Info node `(elisp) Integer Basics'."
       `(list ,(nth 1 form))
     form))
 
+(put 'list 'byte-optimizer #'byte-optimize-list)
+(defun byte-optimize-list (form)
+  ;; (list) -> nil
+  (and (cdr form) form))
+
 ;; Fixme: delete-char -> delete-region (byte-coded)
 
 (put 'set 'byte-optimizer #'byte-optimize-set)



reply via email to

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