yarv-dev:1165
From: "miura" <m-72 tf6.so-net.ne.jp>
Date: Fri, 7 Mar 2008 18:00:44 +0900
Subject: [yarv-dev:1165] Re: 明日発表
三浦です
発表お疲れ様でした。論文、楽しく読まさせて貰いました。
さて、論文の4.3の最後で述べられているFloatオブジェクトのチェック
による速度低下の課題について解決方法が思いつきました。
アイデアの概要は、特化命令を期待される引数の型によってさらに
特化するというものです。そして、実行時に引数の型によって命令を
書き換えてしまいます。
opt_plusを例に挙げます。
最初コンパイル時には現在opt_plusにあたる部分はopt_plus_virgin
命令を生成します。
opt_plus_virgin命令は次のような動作をします
引数がfixnumのとき
自身のopt_plus_virgin命令にあたる部分にopt_plus_fixnumに書き換える
opt_plus_fixnumを呼び出す
引数がfloatのとき
自身のopt_plus_virgin命令にあたる部分にopt_plus_floatに書き換える
opt_plus_floatを呼び出す
引数がSTRINGの時
自身のopt_plus_virgin命令にあたる部分にopt_plus_stringに書き換える
opt_plus_floatを呼び出す
それぞれの命令は命令の名前になっている型を最優先で判断します。
必要な型について命令をあらかじめ用意しておきます。
例えば、opt_plus_fixnumは次のようになります。
if (引数がFIXNUMか) {
}
else if (引数が埋め込みFLOATか) {
}
else if
:
:
同様にopt_plus_stringは次のようになります。
if (引数がSTRINGか) {
}
else if (引数が埋め込みFIXNUMか) {
}
else if
:
:
命令数が激増するので、この方法が効果があるか分からないですが・・・。
--
ML: yarv-dev quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml/
1156 2008-03-04 22:53 [ko1 atdot.net ] 明日発表 1157 2008-03-05 00:49 ┣[shiba mail2.accsnet.] 1158 2008-03-05 01:20 ┃┣[ko1 atdot.net ] 1161 2008-03-05 01:42 ┃┃┗[shiba mail2.accsnet.] 1159 2008-03-05 01:26 ┃┗[shiba mail2.accsnet.] 1160 2008-03-05 01:26 ┃ ┗[ko1 atdot.net ] 1162 2008-03-05 01:49 ┃ ┗[shiba mail2.accsnet.] 1163 2008-03-05 01:51 ┃ ┗[ko1 atdot.net ] 1164 2008-03-05 01:55 ┃ ┗[shiba mail2.accsnet.] -> 1165 2008-03-07 18:00 ┣[m-72 tf6.so-net.ne.j] 1166 2008-03-07 21:00 ┃┗[ko1 atdot.net ] 1167 2008-03-08 00:09 ┃ ┗[m-72 tf6.so-net.ne.j] 1168 2008-03-08 16:18 ┃ ┗[ko1 atdot.net ] 1169 2008-03-10 18:59 ┃ ┗[m-72 tf6.so-net.ne.j] 1172 2008-03-13 22:07 ┃ ┗[ko1 atdot.net ] 1170 2008-03-11 10:18 ┗[horinout rish.kyoto-] 1171 2008-03-12 01:21 ┣[2008 shudo.net ] 1174 2008-03-13 22:13 ┃┗[ko1 atdot.net ] 1173 2008-03-13 22:12 ┗[ko1 atdot.net ] 1176 2008-03-14 12:30 ┗[horinout rish.kyoto-] 1177 2008-03-14 23:26 ┗[ko1 atdot.net ]