Mercurial > hg > xemacs-beta
comparison lisp/cl-macs.el @ 4716:dca5bb2adff1
Don't cons with #'mapcar calls where the result is discarded,
decide on mapc-internal at compile time if the Common Lisp functionality is
not being used.
2009-10-12 Aidan Kehoe <kehoea@parhasard.net>
* cl-macs.el (mapc):
New compiler macro, use mapc-internal at
compile time if we're not using the Common Lisp functionality.
* bytecomp.el (byte-compile-mapcar, byte-compile-maplist): New.
If the return value of mapcar is being discarded, compile it to a
mapc-internal call instead, and warn, because the programmer
probably can't rely on always being compiled by an XEmacs that
does this. Similarly for maplist and mapl; and use
byte-compile-funarg for map, mapl, mapcan, mapcon.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Mon, 12 Oct 2009 17:19:52 +0100 |
parents | 84f870bbd17b |
children | bd51ab22afa8 |
comparison
equal
deleted
inserted
replaced
4715:a357478dd457 | 4716:dca5bb2adff1 |
---|---|
3257 ;; getting compiler-macroexpanded again: | 3257 ;; getting compiler-macroexpanded again: |
3258 (cl-delete-duplicates begin ',cl-keys nil)))) | 3258 (cl-delete-duplicates begin ',cl-keys nil)))) |
3259 (t | 3259 (t |
3260 form)))) | 3260 form)))) |
3261 | 3261 |
3262 ;; XEmacs change, the GNU mapc doesn't accept the Common Lisp args, so this | |
3263 ;; change isn't helpful. | |
3264 (define-compiler-macro mapc (&whole form cl-func cl-seq &rest cl-rest) | |
3265 (if cl-rest | |
3266 form | |
3267 (cons 'mapc-internal (cdr form)))) | |
3268 | |
3262 (mapc | 3269 (mapc |
3263 #'(lambda (y) | 3270 #'(lambda (y) |
3264 (put (car y) 'side-effect-free t) | 3271 (put (car y) 'side-effect-free t) |
3265 (put (car y) 'byte-compile 'cl-byte-compile-compiler-macro) | 3272 (put (car y) 'byte-compile 'cl-byte-compile-compiler-macro) |
3266 (put (car y) 'cl-compiler-macro | 3273 (put (car y) 'cl-compiler-macro |