yarv-dev:155
From: SASADA Koichi <ko1 atdot.net>
Date: Sun, 29 Aug 2004 02:57:20 +0900
Subject: [yarv-dev:155] Re: inline cache with VM version
MAEDA Atusi <maeda-yarv atusi.org> wrote :
[ [yarv-dev:154] Re: inline cache with VM version ]
at 28 Aug 2004 06:31:52 +0900
ささだです.
>> 本当はVM用定数にしたいんだけど,そうするとずいぶんとポインタを
>> たぐる手間が増えるので(thread -> vm -> counter),グローバル変数
>> にします.あー,あとで後悔するかなぁ.
>
> 良く分かってないですが、VMのメインループの中では局所変数にできないんで
> しょうか。(あれ、メインループはなくって call threading にしたんだっけ?)
いえ,メインループです.,局所変数にするということは,カウ
ンタのポインタを持っとくってイメージですかね.
> 他の手としては、クラスが変更されるたびに増えて、かつ一意なclass_idを各
> クラスオブジェクトが持っていて、
> if(CLASS_ID_OF(recv) == cached_recv_class_id) {
> // hit
> method = cached;
> }
> else{
> // miss
> method = normal_search(recv, id);
> }
> とか?
あー,頭いいなぁ.全然思いつきませんでした.
でも,これ考えてみたんですが,クラスが代わったとき,すべて
の継承先に伝えなければならないので,大変かもしれません(実装が).
とくに,特異クラスみたいなことしてる場合に.特異クラスは継承でき
ないから問題ないかな?
モジュールの場合は,include してる奴ら全部に知らせないといけ
ないんですね.
あと,RClass(クラスを表現する構造体)に空きがないので,その
あたりも面倒そうです(連想配列などひとつ経由するかもしれません).
>
> (fixnumとかのclass_idを増やすにはどうすんだろ。)
Fixnum クラスは Class なので問題ないんじゃないかと思います.
--
// SASADA Koichi at atdot dot net
//
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
153 2004-08-28 01:32 [ko1 atdot.net ] inline cache with VM version 154 2004-08-28 06:31 ┗[maeda-yarv atusi.org] -> 155 2004-08-29 02:57 ┗[ko1 atdot.net ] 157 2004-08-29 15:10 ┗[shudo computer.org ] 160 2004-08-29 17:44 ┗[ko1 atdot.net ] 162 2004-08-29 18:22 ┗[shudo computer.org ] 163 2004-08-29 18:27 ┗[ko1 atdot.net ]