Index: emacs/lisp/emacs-lisp/bytecomp.el
diff -c emacs/lisp/emacs-lisp/bytecomp.el:2.171
emacs/lisp/emacs-lisp/bytecomp.el:2.172
*** emacs/lisp/emacs-lisp/bytecomp.el:2.171 Fri Jul 8 22:49:47 2005
--- emacs/lisp/emacs-lisp/bytecomp.el Sat Jul 16 18:02:07 2005
***************
*** 3448,3459 ****
(args (cdr form)))
(if (null args)
(byte-compile-form-do-effect t)
! (while (cdr args)
! (byte-compile-form (car args))
(byte-compile-goto-if nil for-effect failtag)
! (setq args (cdr args)))
! (byte-compile-form-do-effect (car args))
! (byte-compile-out-tag failtag))))
(defun byte-compile-or (form)
(let ((wintag (byte-compile-make-tag))
--- 3448,3466 ----
(args (cdr form)))
(if (null args)
(byte-compile-form-do-effect t)
! (byte-compile-and-recursion args failtag))))
!
! ;; Handle compilation of a multi-argument `and' call.
! ;; We use tail recursion so we can use byte-compile-maybe-guarded.
! (defun byte-compile-and-recursion (rest failtag)
! (if (cdr rest)
! (progn
! (byte-compile-form (car rest))
(byte-compile-goto-if nil for-effect failtag)
! (byte-compile-maybe-guarded (car rest)
! (byte-compile-and-recursion (cdr rest) failtag)))
! (byte-compile-form-do-effect (car rest))
! (byte-compile-out-tag failtag)))
(defun byte-compile-or (form)
(let ((wintag (byte-compile-make-tag))
_______________________________________________
Emacs-diffs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-diffs