去年からの懸案の clang 対応。Paeser 部分では CompoundStatement 、つまり、Cの {} が
RAII を使うようになった
のが問題を引き起こしていて。RAII とは
Resouece Allocation is Initialization
というもので、malloc/smart pointer を宣言で片付けようって奴。ARCもその仲間。Rust もそうかな。
関数の中で関数を定義するので環境切り替えが入るのだけど、そことRAIIの境界がずれて死ぬ感じ。余計にpopしてる感じ。
結果的には
{ RAII; ... }
というように {} で scope を追加してやると良いらしい。微妙な感じ。動けば正義か。
もう一つは tail call が出なくて死ぬいつものやつ。Parse時とcall生成時がずれるのでCallIsntのconsructorにcounterは挟んだ。
これで、生成時からParse時を追跡。でも、見つけてみたら、そこは普通の関数と同じ扱いをするべきところだった。はぁ?
で、hg blame してみると、5/30に、ばっちり自分で処理を削ってる。お前な〜 酔っ払いながらやってたろ〜
まぁ、protptypeがあわないとえげつないメッセージを出して死ぬっていうおまけはあるんですが、できたみたいです。
brewはcompileに1時間、bottleにするのに1時間40分。3GBあるみたい。LLVMのdebug binary でかすぎる。
No comments:
Post a Comment