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 ]