Mark1 TIM のガベージコレクション(GC)対応について、
・スタックに積まれているクロージャのフレームポインタのアドレスしか使用中としてマークしてなかったので、
それらのアドレスが指すヒープの中身のフレーム(クロージャのリスト)についてもアドレスを再帰的に取り出して、
使用中としてマークするように修正。
・使用中でない領域を解放する関数の実装を思い切り間違えていたので修正。
以上を行ったところ、エラーが出ていたテストプログラムも一応正常に終了して、
終了時の確保領域数や実行中の最大確保領域数が、GCなしに比べて小さくなりました。
ただ、以上の方法だと使用中としてマークする領域が多すぎる(スペースリークと呼ぶらしい)ようで、
その解消方法がテキストに書いてあるみたいですが、恥ずかしながら内容をよく理解できませんでした。
まだまだ先は長そうですが、少し進んだと思います。