[前][次][番号順一覧][スレッド一覧][生データ]

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       ]