msumimz's diary

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

whileを実装しました

こんなコードが動きます。

def m1
  i = 1
  sum = 0
  while i <= 10000
    sum += i
    i += 1
  end
  sum
end

precompile Object, :m1

puts m1 # => 50005000

たかがwhileにどれだけ時間かかってるんだという感じですが、機能追加に合わせて周辺コードを追加・変更しているためです。今回はSSA変換処理を修正しています。

これで、ループが書けるようになりましたので、まともなベンチマークを動かせます。次回はベンチマークを取ってJITの性能を確かめてみたいと思います。