yarv-dev:87
From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 21 Jun 2004 17:37:00 +0900
Subject: [yarv-dev:87] Re: AOT Compiler
shudo computer.org wrote :
[ [yarv-dev:86] Re: AOT Compiler ]
at Mon, 21 Jun 2004 17:13:50 +0900 (JST)
ささだ@まったく原稿に手につかない です.
> 「両コンパイラの出力は共通にする」というのは、
> JIT コンパイラと AOT コンパイラで
> 基本部分 (parse -> 最適化 -> コード生成) を共通化する、
> ということです。
> わかりにくくてごめんなさい。
きちんとした最適化部,コード生成部さえもてれば問題ないのだ
とは思うのですが,絶対半年じゃ無理だと思うんで.
> 以下が伴えば、コンパイラを呼び出しちゃうのもいいんじゃないでしょうか。
>
> - コンパイル結果をキャッシュして使いまわす。
> - production run のときにだけ enable できるか、
> または、開発時には disable できる。
>
> 3,4年前に、奈良先端の蟻川さんが作ったという Java バイトコードの
> JIT コンパイラは、外部の C コンパイラを呼び出していたと思います。
> 共有ライブラリを作ってロードしていたと思います。
多分,production run のときには AOT compiler を使えると思うので,
開発時に disable できるようなもの,がいいのかもしれません.でも,そ
の辺がバグの温床になったりして.
JITコンパイルのタイミングにもよるんだと思いますが,多分 profile
もどきはやろうと思っています.で,n回(多分2回)以上起動したものを
コンパイル,と.1度しか呼ばれないながーいメソッドには対応できない
んですけど,まぁその辺はとりあえずいいかー,と.
で,頻繁にコンパイルしそうなので,gcc 呼び出すのはちょっと富豪的
すぎるんじゃないかなー,と.キャッシュするにしても,同一であるとい
うチェックにちょっと時間がかかりそうな感じです.一般にはどうやるん
だろう.
ruby だとループはイテレータでまわすと思うんで,コンパイル
するのはブロックだけでいいと思うんだけれど,そういえばブロック
って C でどうやって表現するのか知りません.ガビーン.
まぁ,JITコンパイルの場合,Cでの表現に拘らなくてもいいとは
思うんですが,AOTで問題になりますねえ.
--
// 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 ]