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

yarv-dev:154

From: MAEDA Atusi <maeda-yarv atusi.org>
Date: Sat, 28 Aug 2004 06:31:52 +0900
Subject: [yarv-dev:154] Re: inline cache with VM version

SASADA Koichi <ko1 atdot.net> writes:

>  本当はVM用定数にしたいんだけど,そうするとずいぶんとポインタを
> たぐる手間が増えるので(thread -> vm -> counter),グローバル変数
> にします.あー,あとで後悔するかなぁ.

良く分かってないですが、VMのメインループの中では局所変数にできないんで
しょうか。(あれ、メインループはなくって call threading にしたんだっけ?)

>  検索手法は,
> 
>   if(CLASS_OF(recv) == cached_recv_class) &&
>      cache_vm_version == global_vm_version){
>     // hit
>     method = cached;
>   }
>   else{
>     // miss
>     method = normal_search(recv, id);
>   }
> 
>   最低,CLASS_OF のコスト + メモリアクセス3回 + 比較が2回
> となります.

他の手としては、クラスが変更されるたびに増えて、かつ一意なclass_idを各
クラスオブジェクトが持っていて、
   if(CLASS_ID_OF(recv) == cached_recv_class_id) {
     // hit
     method = cached;
   }
   else{
     // miss
     method = normal_search(recv, id);
   }
とか?

(fixnumとかのclass_idを増やすにはどうすんだろ。)

				前田敦司

--
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       ]