(byte-optimize-concat): New function.

This commit is contained in:
Karl Heuer 1997-11-03 03:58:23 +00:00
parent d5824b35e4
commit 79d137ffe7

View file

@ -697,7 +697,7 @@
((and (null (nthcdr 3 form))
(or (memq (nth 1 form) '(1 -1))
(memq (nth 2 form) '(1 -1))))
;; Optiize (+ x 1) into (1+ x) and (+ x -1) into (1- x).
;; Optimize (+ x 1) into (1+ x) and (+ x -1) into (1- x).
(let ((integer
(if (memq (nth 1 form) '(1 -1))
(nth 1 form)
@ -1076,6 +1076,18 @@
(while (>= (setq count (1- count)) 0)
(setq form (list 'cdr form)))
form)))
(put 'concat 'byte-optimizer 'byte-optimize-concat)
(defun byte-optimize-concat (form)
(let ((args (cdr form))
(constant t))
(while (and args constant)
(or (byte-compile-constp (car args))
(setq constant nil))
(setq args (cdr args)))
(if constant
(eval form)
form)))
;;; enumerating those functions which need not be called if the returned
;;; value is not used. That is, something like