[Yarv-devel] GC Tech. on Script Lang.
K.Sasada
ko1 @ namikilab.tuat.ac.jp
2004年 2月 9日 (月) 20:55:56 EST
matz at ruby-lang.org (Yukihiro Matsumoto) wrote :
[ Re: [Yarv-devel] GC Tech. on Script Lang. ]
at Mon, 09 Feb 2004 20:26:17 +0900
ささだです。
> やりません。Stringクラスの+メソッドか再定義されない保証がな
> いので。動的な言語はこれだから。(苦笑)
String#+ とか、 Fixnum#+, ... はきっと書き換えられないだろう、という予
測の下で、定数畳み込みみたいなことをやってしまう。でも、書き換えられたら
やばいので、保険としてその命令列のを String とか Fixnum に登録しておく。
万が一String や Fixnum が書き換えられたら(もしくは、String#+ や
Fixnum#+ のような誰も手をつけねーだろ、っていうメソッドを書き換えちゃっ
たら)登録した全ての命令列を(定数畳み込みなしで)最適化しなおす。
ということを考えていたんですが、どれくらい効果が出るかわかりませんね。
というか、多分報われない。
定数にも同じようにフックかけてやれば、それは結構効果があると思うのです
が。定数の再定義なんてあんまりしないよね? ね?
if(DebugNantoka)
debug_print ...
end
個人的に、こういうのを消したいんですよ。これのために、私は ruby でこう
いうの埋め込むのをためらってしまって。
非常に安易だけどやられてないってことは(聞いたことが無いだけかも)、や
っぱり効果がないんでしょうか。
問題:畳み込んだ命令列実行中、String#+ などを再定義されたとき、処理が復
帰できますか?(命令位置の補正ができますか?)
--
// SASADA Koichi @ namikilab.tuat.ac.jp
//
Yarv-devel メーリングリストの案内