Open5
Ribbitで使っていない機能を整理する

そこそこテストが通る状態になったので、使っていない機能やオブジェクト表現を整理してVM部分をC++で実装する準備を進めていく。

cond-expand
の削除
Yuniは方針として cond-expand
を導入しないことにしている。ライブラリ言語がインラインで存在すると解析等が面倒になるため。今のところはライブラリ自体をリネームするので十分だし。。

putchar
getchar
の削除
初期検証では大変お世話になったが今はYuni側のScheme port実装を使っているので不要になった。

定数シンボルの特別対応を廃止
いわゆる constant
命令の度にヒープオブジェクトに変換するのはもったいないなと思って特別対応を入れてたけど、命令列を直接書き換えるとかいくらでもやり様はあるのでロジックを単純化した。むしろこれで早くなった。。

Dead code elimination と constant propagation
Dead code elimination は分割コンパイルをサポートするためには無くす必要がある。Constant propagationはDead code eliminationのためのliveness analysisに依存している(変数の利用状況のトラック結果をそのまま利用している)のでついでに消した。
コンパイラの見通しがだいぶ良くなった。