Optimize byte-compilation of proper-list-p
For discussion, see thread starting at: https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg00316.html * lisp/emacs-lisp/byte-opt.el: Optimize proper-list-p as a predicate. * lisp/subr.el: Mark proper-list-p as pure, and side-effect and error free.
This commit is contained in:
parent
6dc4c722af
commit
9a54e70c18
2 changed files with 7 additions and 1 deletions
|
@ -879,7 +879,8 @@
|
|||
(put 'symbolp 'byte-optimizer 'byte-optimize-predicate)
|
||||
(put 'stringp 'byte-optimizer 'byte-optimize-predicate)
|
||||
(put 'string< 'byte-optimizer 'byte-optimize-predicate)
|
||||
(put 'string-lessp 'byte-optimizer 'byte-optimize-predicate)
|
||||
(put 'string-lessp 'byte-optimizer 'byte-optimize-predicate)
|
||||
(put 'proper-list-p 'byte-optimizer 'byte-optimize-predicate)
|
||||
|
||||
(put 'logand 'byte-optimizer 'byte-optimize-predicate)
|
||||
(put 'logior 'byte-optimizer 'byte-optimize-predicate)
|
||||
|
|
|
@ -604,6 +604,11 @@ If N is omitted or nil, remove the last element."
|
|||
(if (> n 0) (setcdr (nthcdr (- (1- m) n) list) nil))
|
||||
list))))
|
||||
|
||||
;; The function's definition was moved to fns.c,
|
||||
;; but it's easier to set properties here.
|
||||
(put 'proper-list-p 'pure t)
|
||||
(put 'proper-list-p 'side-effect-free 'error-free)
|
||||
|
||||
(defun delete-dups (list)
|
||||
"Destructively remove `equal' duplicates from LIST.
|
||||
Store the result in LIST and return it. LIST must be a proper list.
|
||||
|
|
Loading…
Add table
Reference in a new issue