yarv-dev:88
From: MAEDA Atusi <maeda-yarv atusi.org>
Date: Mon, 21 Jun 2004 18:58:41 +0900
Subject: [yarv-dev:88] Re: AOT Compiler
ML: yarv-dev quickml.atdot.net 新メンバー: maeda@c... SASADA Koichi <ko1 atdot.net> writes: > > 3,4年前に、奈良先端の蟻川さんが作ったという Java バイトコードの > > JIT コンパイラは、外部の C コンパイラを呼び出していたと思います。 > > 共有ライブラリを作ってロードしていたと思います。 QuickSilverという処理系がありませんでしたっけ。 Cコンパイラは使っていないけど、「AOTでコンパイルしてキャッシュし ておく」ってやつ。 quasi-static compilerと呼んでいたような気が。 ああ、これだ。 Quicksilver: a quasi-static compiler for Java Mauricio Serrano, Rajesh Bordawekar, Sam Midkiff, Manish Gupta Proc. OOPSLA 2000, pp.66-82 > 多分,production run のときには AOT compiler を使えると思うので, > 開発時に disable できるようなもの,がいいのかもしれません.でも,そ > の辺がバグの温床になったりして. 実は、真面目にVM toolkitを作ろうと思っています。 命令フォーマット定義とCで書いたインタプリタ記述から、 1. バイトコードインタプリタ 2. スレッデッドコードインタプリタ 3. Cへのトランスレータ を生成できるようなやつを。 > で,頻繁にコンパイルしそうなので,gcc 呼び出すのはちょっと富豪的 > すぎるんじゃないかなー,と.キャッシュするにしても,同一であるとい > うチェックにちょっと時間がかかりそうな感じです.一般にはどうやるん > だろう. QuickSilver論文は、読もうと思いつつずっと読んでないのです。何か書いて ありそう。 たとえば、 ・CLASSPATHに機械語ファイルがなければ、 ・$HOME/.vm_cash/パッケージ名/クラス名.so へコンパイル ・$HOME/.vm_cashはCLASSPATHに入れておく ・容量の上限を越えたら、LRUで削除 とか? > ruby だとループはイテレータでまわすと思うんで,コンパイル > するのはブロックだけでいいと思うんだけれど,そういえばブロック > って C でどうやって表現するのか知りません.ガビーン. 普通にオブジェクトとして表現すれば良いんでは。メソッドのコードへの(た ぶん表を経由した)参照を含む構造体。 オブジェクトを割り付けたくないとかなら、入れ子関数を使ったりすると 面白いかも知れないけど。 前田敦司 -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml このMLを退会する方法: - 本文が空のメールを <yarv-dev quickml.atdot.net> に送ってください - 本文が空のメールを送れない場合は、 本文に「退会」とだけ書いたメールを <yarv-dev quickml.atdot.net> に送ってください (署名やhotmailの広告などがついて空メールを送れない場合など) <yarv-dev quickml.atdot.net> のメンバー: ko1@a... aamine@l... babie7a0@y... cv8t-hdk@a... fukumori@m... g-stuff@b... gotoyuzo@n... iga@r... ikoma@m... kawaji@h... kou@c... kumaryu@k... maeda-yarv@a... makoto.nakagawa@h... masato@c... matz@r... nobsun@s... nobu.nakada@n... sakai@t... sheepman@t... shudo@c... shugo@r... usa@g... yuya-ml@4... zn@m... nobu.nokada@s... maeda@c...
85 2004-06-21 15:52 [ko1 atdot.net ] AOT Compiler 86 2004-06-21 17:13 ┗[shudo computer.org ] 87 2004-06-21 17:37 ┗[ko1 atdot.net ] -> 88 2004-06-21 18:58 ┗[maeda-yarv atusi.org] 89 2004-06-21 20:35 ┗[ko1 atdot.net ] 90 2004-06-21 21:51 ┗[(nil) ] 91 2004-06-22 01:58 ┗[ko1 atdot.net ] 92 2004-06-22 13:12 ┗[maeda-yarv atusi.org] 93 2004-06-22 18:58 ┗[ko1 atdot.net ]