yarv-dev:89
From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 21 Jun 2004 20:35:31 +0900
Subject: [yarv-dev:89] Re: AOT Compiler
MAEDA Atusi <maeda-yarv atusi.org> wrote :
[ [yarv-dev:88] Re: AOT Compiler ]
at 21 Jun 2004 18:58:41 +0900
ささだです.
> 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
発見したんでよんでみます.うわ,17ページ.
> 実は、真面目にVM toolkitを作ろうと思っています。
おお.vmgen との差異は?
> 命令フォーマット定義とCで書いたインタプリタ記述から、
> 1. バイトコードインタプリタ
> 2. スレッデッドコードインタプリタ
> 3. Cへのトランスレータ
> を生成できるようなやつを。
disassemblerや最適化のあたりとかはどうでしょうか.
> QuickSilver論文は、読もうと思いつつずっと読んでないのです。何か書いて
> ありそう。
>
> たとえば、
> ・CLASSPATHに機械語ファイルがなければ、
> ・$HOME/.vm_cash/パッケージ名/クラス名.so へコンパイル
> ・$HOME/.vm_cashはCLASSPATHに入れておく
> ・容量の上限を越えたら、LRUで削除
> とか?
なんていう名前をつけて,バージョン管理をどうやるのかが気になります.
1ファイル1 shared library ってわけにもいきませんでしょうし.
>> ruby だとループはイテレータでまわすと思うんで,コンパイル
>> するのはブロックだけでいいと思うんだけれど,そういえばブロック
>> って C でどうやって表現するのか知りません.ガビーン.
>
> 普通にオブジェクトとして表現すれば良いんでは。メソッドのコードへの(た
> ぶん表を経由した)参照を含む構造体。
>
> オブジェクトを割り付けたくないとかなら、入れ子関数を使ったりすると
> 面白いかも知れないけど。
あ,わからないと言ったのは,現状の ruby C extension でのブロック
(または Proc)オブジェクトの C表現です.
AOT compiler で C に落としたときにどうなるかな,と.
--
// SASADA Koichi at atdot dot net
//
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
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 ]