[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(defsubst f () (f))
- From: Katsumi Yamaoka <yamaoka@xxxxxxx>
- Date: Thu, 28 Mar 2002 17:21:34 +0900
- X-ml-name: emacs-w3m
- X-mail-count: 03088
表題のような式は、少なくとも Emacs 21.1 以上では許されているよう
です。w3m-util.el の w3m-list-buffers が該当します。XEmacs と
19.30 より以前の Emacs でもたぶん問題ありません。
では Emacs 20.7 や Mule 2.3@19.34 などではどうかと言うと、これら
も emacs-w3m を普通に make する場合には害がありません。なぜかと
言うと、最初に w3m-util.el が byte-compile されて
(defalias 'f (lambda nil (funcall 'f)))
のような感じの byte-code が生成され、以後これが他のモジュールで
使われるときに inline されるからです。byte-compile するときに無
限ループを生じないのは不思議ではあるのですけれど。
ですが、わざわざこれを言いに出てきたのは、Emacs 20.7 などで以下
のようなことを行なうと、確実に無限ループを起こすからです。
(progn
(load "w3m-util.el" nil nil t)
(byte-compile (lambda nil (w3m-list-buffers))))
これは emacs-w3m を make するときに、最初に w3m-util.el を byte-
compile しない場合に相当します。えー、とりあえずそれだけです。
;; 何言ってんだか ^^;;
2001-10-20 Gerd Moellmann <gerd@gnu.org>
* (Version 21.1 released.)
2000-11-14 Gerd Moellmann <gerd@gnu.org>
* emacs-lisp/byte-opt.el (byte-compile-unfold-lambda):
Don't recursively optimize body because that can lead to infinite
recursion; see comment there.
1996-05-25 Karl Heuer <kwzh@gnu.ai.mit.edu>
* Version 19.31 released.
1995-12-07 Richard Stallman <rms@whiz-bang.gnu.ai.mit.edu>
* byte-opt.el (byte-compile-unfold-lambda): Recursively optimize body.
--
Katsumi Yamaoka <yamaoka@jpl.org>