コンパイルした命令列は分岐による jump を含んでいる。
例えば
JUMP <ref labelA> .... .... <labelA>
のようなイメージ。
コンパイルの最終フェーズでこれらのラベルの参照を命令列のオフセットに書き換える処理をしている。
JUMP 123 .... .... <先頭から123番目の場所>
となる。
この書き換え処理を Scheme 側で書いていたのだけど命令列が長いと無視できないくらい遅かったので C++ 側に移植したらずいぶんと速くなった。
チューニングの中盤で 400msec 位速くなるのはうれしいな。