mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-11 00:30:17 -08:00
Optimise member and assoc (etc) with constant empty list
* lisp/emacs-lisp/byte-opt.el (byte-optimize-assq): New. (byte-optimize-member, byte-optimize-assoc, byte-optimize-memq): When the list argument is constant nil, the result is always nil. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): Add test cases.
This commit is contained in:
parent
ba6df55475
commit
fab1e220db
2 changed files with 56 additions and 25 deletions
|
|
@ -536,6 +536,21 @@
|
|||
(let ((_a 1)
|
||||
(_b 2))
|
||||
'z)
|
||||
|
||||
;; Check empty-list optimisations.
|
||||
(mapcar (lambda (x) (member x nil)) '("a" 2 nil))
|
||||
(mapcar (lambda (x) (memql x nil)) '(a 2 nil))
|
||||
(mapcar (lambda (x) (memq x nil)) '(a nil))
|
||||
(let ((n 0))
|
||||
(list (mapcar (lambda (x) (member (setq n (1+ n)) nil)) '(a "nil"))
|
||||
n))
|
||||
(mapcar (lambda (x) (assoc x nil)) '("a" nil))
|
||||
(mapcar (lambda (x) (assq x nil)) '(a nil))
|
||||
(mapcar (lambda (x) (rassoc x nil)) '("a" nil))
|
||||
(mapcar (lambda (x) (rassq x nil)) '(a nil))
|
||||
(let ((n 0))
|
||||
(list (mapcar (lambda (x) (assoc (setq n (1+ n)) nil)) '(a "nil"))
|
||||
n))
|
||||
)
|
||||
"List of expressions for cross-testing interpreted and compiled code.")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue