3448 |
(args (cdr form))) |
(args (cdr form))) |
3449 |
(if (null args) |
(if (null args) |
3450 |
(byte-compile-form-do-effect t) |
(byte-compile-form-do-effect t) |
3451 |
(while (cdr args) |
(byte-compile-and-recursion args failtag)))) |
3452 |
(byte-compile-form (car args)) |
|
3453 |
|
;; Handle compilation of a multi-argument `and' call. |
3454 |
|
;; We use tail recursion so we can use byte-compile-maybe-guarded. |
3455 |
|
(defun byte-compile-and-recursion (rest failtag) |
3456 |
|
(if (cdr rest) |
3457 |
|
(progn |
3458 |
|
(byte-compile-form (car rest)) |
3459 |
(byte-compile-goto-if nil for-effect failtag) |
(byte-compile-goto-if nil for-effect failtag) |
3460 |
(setq args (cdr args))) |
(byte-compile-maybe-guarded (car rest) |
3461 |
(byte-compile-form-do-effect (car args)) |
(byte-compile-and-recursion (cdr rest) failtag))) |
3462 |
(byte-compile-out-tag failtag)))) |
(byte-compile-form-do-effect (car rest)) |
3463 |
|
(byte-compile-out-tag failtag))) |
3464 |
|
|
3465 |
(defun byte-compile-or (form) |
(defun byte-compile-or (form) |
3466 |
(let ((wintag (byte-compile-make-tag)) |
(let ((wintag (byte-compile-make-tag)) |