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

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       ]