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

yarv-dev:406

From: shudo computer.org
Date: Thu, 20 Jan 2005 16:39:42 +0900
Subject: [yarv-dev:406] Re: Prosym report

ささださん、皆様、首藤です。

> > 再定義されていない (キャッシュにヒットしている) 状態でも
> > 条件分岐があるというのはヌルいですが、
> > Ruby だし、そのくらいでいいのかな、と思ってました。

Ruby だし、というよりも、
どうせ普段から条件分岐がいろいろあるインタプリタだから、
でした。

> > バイトコードインタプリタなら、バイトコード命令を置き換えれば済むから、
> > それほど難しくないように思います。
>
>  そうですね.ただ面倒くさいだけの作業になりそうです.

再定義をフックして、影響のある箇所を見つけて、
そこのバイトコード命令を書き換える、ということになるかと。

似たような機構を shuJIT に実装しようと考えた際は、
表の管理が面倒そうだな、と思いました。

> >> ・AOT compiler も同様の理由でよろしくない
> >
> > AOT コンパイラだからといってコード書き換えはできます。
>
>  再定義された場合とされていない場合を両方用意して,再定義が
> 起こったらそちらに差し替え,とかでしょうか.

(AOT に限った話ではないですが、)
最初は、再定義が起きないことを前堤とした最良のコードにしておいて、
再定義が起きてしまったら、メソッド探索処理に飛ぶように
コードを書き換える。と。

>  マシンスタックフレームを解析しないと出来ないぽいですね.

どうでしょう?

> さすがにそこまではやれなさそう.shujit ではされたんですか?

さすがに、メソッド探索が不要であることが
静的に自明 (private, final メソッド) な場合には探索しないようにしましたが、
探索が必要になるかもしれない呼び出しを nonvirtual な呼び出しに置き換える
という最適化 (IBM TRL 用語で devirtualization) まではしませんでした。

インラインメソッドキャッシュは、
interface 呼び出し (JVM の invokeinterface 命令) にだけ、
適用しました。

Kazuyuki Shudo/首藤一幸   私をたばねないで あらせいとうの花のように
  shudo computer.org   http://www.shudo.net/

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

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

       398 2005-01-19 17:40 [ko1 atdot.net       ] Prosym report                           
       400 2005-01-19 18:15 ┣[matz ruby-lang.org  ]                                       
       401 2005-01-19 18:56 ┃┗[ko1 atdot.net       ]                                     
       403 2005-01-20 14:20 ┗[ko1 atdot.net       ]                                       
       404 2005-01-20 14:48  ┗[shudo computer.org  ]                                     
       405 2005-01-20 15:30   ┗[ko1 atdot.net       ]                                   
->     406 2005-01-20 16:39    ┗[shudo computer.org  ]                                 
       407 2005-01-20 16:46     ┣[shudo computer.org  ]                               
       408 2005-01-20 16:42     ┗[ko1 atdot.net       ]