YARV
from プロセスVM
Yet Another Ruby VM
Ruby v1.9で導入されたプロセスVM
YARVをつかうことで速くなった
スタックマシンである
コードを実行する際にYARV命令列用の引数と戻り値からなる値のスタックを保持する
YARVとJVMの違い
Rubyは機械語へのコンパイルはしない。
YARV用のワードコードへ変換される
JVMは命令列のいくつかを、自身の持つHotSpotやJIT Compilerなどを使って、バイトコードへ変換する
例
ASTの関数呼び出し,メソッド呼び出し部分をYARV IRにコンパイルする
1. レシーバをpush
2. 引数をpush
3. メソッド/関数を呼び出す
参考
『Rubyのしくみ』
https://magazine.rubyist.net/articles/0053/0053-YarvManiacs.html