yarv-dev:92
From: MAEDA Atusi <maeda-yarv atusi.org>
Date: Tue, 22 Jun 2004 13:12:46 +0900
Subject: [yarv-dev:92] Re: AOT Compiler
SASADA Koichi <ko1 atdot.net> writes: > しかしなぜ前田さんの投稿では新メンバーになっちゃんだろう. それは私が間違えてCc:をつけたり、変なFrom:をつけてしまったからです(今 度は大丈夫なはず)。 > > 1ソースファイル → 1 shared object (.so) でいいんじゃないでしょうか。 > > Javaなら1クラス → 1 so が自然でしょうね。 > > たしかに,拡張ライブラリなんかはこれでいいかもしれません. 普通のプログラムでも、 xxx.rb より xxx.so が新しければ、xxx.so をロードして実行。 そうでなければ xxx.so を作り直してロードして実行。 でたいてい良くないですか? 問題はディレクトリに書き込めないときだけど。その時は、 毎回テンポラリにバイナリを作って実行 または、 コンパイルせずにインタプリトする とか。 または、ソースと同じディレクトリに .so を書くのをやめて、 ~/.vm_cache/ の下に、外と同じディレクトリ構造を作る とか。 > > Procをベースに、callメソッドだけをオーバーライドした特異クラスとか? > > メソッドローカル変数なんかにアクセスする必要があるんで, > そんなに簡単そうじゃないような気がします.まぁ,少し考えて > みます.全然考え方を変えなきゃいけないかもしれない. Cでオブジェクトとかクロージャを表現する場合と同じような感じだと思いま すがねえ。環境とかコードへのポインタを含んだ構造体。コードには、その構 造体へのポインタ自身を引数として渡す(thisとかselfとか)。 この構造体をヒープに割り付けない(autoとしてスタック内に割り付ける)とい う最適化もあり得ると思いますが、それはまあ、あとで考えれば良いんでは。 mallocのかわりにallocaすれば良いだけですが。 # む。またちょっとアイデアが浮かんだぞ。 # GCCのnested functionみたいに「関数へのポインタ1個でクロージャを表現」 # をポータブルに実現できるかも。 前田敦司 -- 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 ]