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