JIT call に悩む悩む

ここ2週間くらい JIT コンパイルされた subr からクロージャを call する方法について悩みまくっている。
VM の run ループがネストする際にスタックを調節したり、番兵の HALT を挿入したりと結構大変。おおよそ道筋が出来てきたが、CALL が tail-context かどうかの情報が必須である事が分かったので TAIL-CALL というインストラクションを追加しようと思う。
もちろん元々 tail-context かどうかはチェックしているのだが、コンパイル時に CALL + SHIFT という 2命令になるので、CALL 命令にには tail-context かの情報がないのだ。