Previous: Packager Stage Up: 目次 Next: Transformations

Writer Stage

PackagerがCompiledCodeを作成したら、 Rubiniusはあとで利用できるようにメソッドをファイルに書き出します。 例えば、最初にファイルがrequireされたあと、次のrequireからはRubyコードではなく 書き出されたファイルの方をロードし、パースしコンパイルします。

このステージは、非常にシンプルです。 もともとのファイル名を受け取って、cを最後につけます。 そして、Rubinius::CompiledFile.dumpを、前段階のCompiledCodeオブジェクトと 書き出し先のファイル名を引数として、実行します。

ファイルをディスクに書き出し終わったら、 渡された入力値(CompiledCodeオブジェクト)を返します。 これはコンパイル処理全体の返り値になります。

参照されているファイル

カスタマイズする

このステージは実際には任意で、コンパイル済みファイル作りたい時のみ使われます。 文字列をeval等でコンパイルしたい場合には、この処理はスキップされます。 その場合、コンパイラはPackagerステージで止まり、 そこで作られたCompiledCodeをコンパイラの返り値として返します。

Rubiniusコンパイラのアーキテクチャでは、 このステージのあとにさらにステージを追加することは簡単にできます。 追加されたステージが渡されたCompiledCodeオブジェクト (もしくは違うCompiledCodeオブジェクト)を返すようになっていれば、 全て期待通りに動くでしょう。

さらに情報を得るには、 コンパイラパイプラインのカスタマイズ を読んでみて下さい。

Previous: Packager Stage Up: 目次 Next: Transformations

Tweet at @rubinius on Twitter or email community@rubini.us. Please report Rubinius issues to our issue tracker.