インライン展開再び - Scheme VM を書く

もうこんな時間か。
Gauche の pass2 の最適化ルーチンをほぼそのまま移植して embedded/jump の最適化を動かしているところ。
命令列を目視した限りでは動きそう。


いくつかインストラクションを追加して VM で動かしてみよう。
一発で動いた。これはなかなか感動。
そのまま移植といっても display の件があったり box の件があったりするので本当にそのままではないけども。
インライン展開の山場は越えて残り40%くらい。この最適化は実行速度にものすごく効くのでうれしい。


例えば

(letrec ([a (lambda (i) (if (= i 1000000) i (a (+ i 1))))])
  (print (a 0)))

のコードを goto を利用したループにしてフレームの作成やら破棄やら余計なものを削ってやるととかだと、30〜40% くらい速くなる。
今週中にインライン展開を終わらせたい。