diff 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
line wrap: on
line diff
--- a/lisp/cl-macs.el	Mon Oct 12 17:01:15 2009 +0100
+++ b/lisp/cl-macs.el	Mon Oct 12 17:19:52 2009 +0100
@@ -3259,6 +3259,13 @@
           (t
            form))))
 
+;; XEmacs change, the GNU mapc doesn't accept the Common Lisp args, so this
+;; change isn't helpful.
+(define-compiler-macro mapc (&whole form cl-func cl-seq &rest cl-rest)
+  (if cl-rest
+      form
+    (cons 'mapc-internal (cdr form))))
+
 (mapc
  #'(lambda (y)
      (put (car y) 'side-effect-free t)