ものがたり(旧)

atsushieno.hatenablog.com に続く

linear IR

http://www.thinkit.co.jp/cert/article/0709/26/2.htm


Ruby処理系はまずRubyプログラムを構文解析という操作により抽象構文木(AST)へ変換します。Ruby 1.8以前では、このASTを直接たどりながら実行していました。仮想マシンでは、さらにASTを独自の命令セットにコンパイルして実行します。

木構造構文木をたどる」よりも、「線形の命令列をたどる」ほうが高速なので、速くなるわけです。また、線形の命令列だと命令を入れ替えるなどの高速化ができるので、もっと速くなる可能性が広がります。

へぇ、YARVはうちで言うところのlinear ILみたいなものを既に実装できているんだ。さすが。てか、linear ILってどうなってんだろ。