msumimz's diary

RubyにJITコンパイラを実装する個人プロジェクトの情報発信ブログです。

メソッド呼び出しを実装しました

対応したのはMRIの内部でNODE_CALLと呼ばれる、レシーバを指定した形式です。そのうち、引数が単純でブロックを取らないもの限定です。足し算なども内部ではメソッド呼び出しですので、例えば以下のコードが動きます。

def m
  1 + 2
end

precompile Object, :m

puts m # => 3

後はwhileを実装すればフィボナッチ数の計算くらいはコンパイルできるようになりますので、そうしたら実行速度を測ってみたいと思います。