自己反映言語を効率的に実行するための技術である部分計算について研究を進めた。具体的には、部分計算の一種である実行時特化について生成されるコードをより効果的なものとする、バイトコード特化(BCS)の枠組みを提案し、Java仮想機械を使ったプロトタイプを構築した。 この技法では、機械語上で特化を行うかわりに、一度仮想機械語上で特化を行い、それを最適化された機械語命令列へ変換することでより効果的なプログラムを生成する。また、コンパイルされた仮想機械命令列を直接解析して特化器を作成することで、ソース言語に依存しない技術となっている。 仮想機械としてはJava仮想機械(JVM)を選択した。その理由は、(1)スタック機械であるために命令列を合成することが容易であることと、(2)局所的なメモリ(フレーム変数)操作と大域的なメモリ(オブジェクト)操作が分離されているなどの静的解析を容易にする性質を備えている、といった点である。さらに、既存のJust-In-Time(JIT)コンパイラを利用した効率的な機械命令列の生成が期待できたり、Java以外の言語からJVMへのコンパイラも数多く開発されているため、複数の言語への対応が容易になる、という利点もある。 仮想機械命令列の解析には、スタック/フレームの状態や副作用を正しく扱う必要があるが、基本的な制約をStataとAbadiによる型体型を拡張したもので与え、制御フロー解析によって副作用に関する制約を加えるような束縛時解析の手法を与えることで解決している。現時点までに、JVM言語のサブセットを扱う処理系が作成されている。
|