末尾呼び出し最適化 その3

結論としては末尾呼び出しの最適化は以前からうまくいっていた。
ただスタックの自動伸長の実装がなかったので初期化時にスタックサイズが決められていて、その大きめのアロケーションのせいで起動が遅かった。

作業

  • stack自動伸長を実装する。
    • vm.scm で実装する
      • fp
      • sp
    • C++ で実装する
  • shift 1 0 は発行しなくてもよい。
  • sizeof let_frame マクロを作る
  • 要らないものを cond-expand で消す

良い感じになってきた。