JITのデバッグの続き
現在./configure --with-jitは動きません。
手強い例外処理のバグを修正しました。ネストするtryはできなくなりましたが、とりあえずバグを修正できました。
tryのネストができないのは仕様にするかもしれません。
後は、キャスト関連で変数を全部64bitで扱っていたせいで、いい加減な処理でも動いてましたが、ちゃんと型をもたせるように修正したため、それをきちんと処理するようにすれば、概ねバグは修正できると思います。たぶん、、、
まだ大物バグがあるかもしれませんが、ぼちぼち修正していきたいと思います。
JIT高速化の続き
現在./configure --with-jitは動きません。
とりあえず、全命令JIT化したのは良いですが、バグがあります。
現在基礎ライブラリを全てJITで動かすのを目標にデバッグしてます。
その次はmake testをJITで動かします。
それで完成ですね。
今日は例外のバグを修正するのに苦労しました。
バグにさえ気付かずversion 2.0をリリースするところでした。
なんとか修正できて良かったです。
でも、デバッグはやっぱり嫌な作業ですね。動いたときの嬉しさは凄いですけど。産みの苦しみみたいなものですかね。
コード自体を書くのは割りと簡単なんですけど、デバッグには苦労します。デバッガあまり使わずprintfデバッグしていることが多いからですかね。gdbはインタフェースが使いづらくてセグメンテーション違反のときに場所を特定するくらいしか使ってません。
まあ、version 2.0を目標に地道にデバッグしていきます。
いつまでかは分かりませんが、近いうちにリリースできるようにします。お楽しみに。
JIT高速化の続き
現在./configure --with-jitは動きません。
とりあえず、キャスト命令のJIT化は全部終わったはずです。確認はしていませんが。一応全部の命令のJIT化は終わったと思います。
明日以降確認してみます。後はテストですね。デバッグがあります。
全ての基礎ライブラリがJITで動き、make testが全部JITで動いたら完成です。ここからが大変です。とりあえず書けたの良いのですが。多分、バグがあるので。上手くすんなり動けばいいのですが、ちょっとテストを動かすのが怖いですね。
まあ、明日以降にします。今日は結構進捗がありました。
もし、上手く動けば、version 2.0としてリリースしたいと思います。
JIT高速化の続き
現在./configure --with-jitは動きません。
とりあえず、キャスト命令もあとはラッパークラスからプリミティブ型へのキャストのみとなりました。
問題はテストが通るかどうかですが。
明日は夜勤なので、昼間にちょっとコーディングしようと思います。
速度出ますかね、、、それが心配です。LLVMの最適化は凄いので、たぶん、速くなっていると思いますが。3秒かかっていた処理が1秒以下になるのが目標なので、GCの改良も含めて、なんとか実現したいと思います。
あとはJIT時のLLVM用のスタックにオブジェクトが存在していてClover2のスタックにはオブジェクトが存在しない場合GCはどうなるんだという心配もあります。たぶん、大丈夫な気もするんですが、もし駄目ならLLVM用のスタックもマークしないといけないかもしれません。
そんな感じですかね。
明後日から1ヶ月ほど休みになるので、7月中には高速化は終わると思います。
もう少しお待ち下さい。