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月中には高速化は終わると思います。
もう少しお待ち下さい。
JIT高速化の続き
現在./configure --with-jitは有効ではありません。
キャスト命令のJIT化をはじめました。LLVM上では複数の命令が同じ命令として扱えるので、かなり早く終わりそうです。
来週中?現職を辞める前には終わるかもしれません。
来週は忙しいですが、コーディングする時間を作って、終わらせたいと思います。
キャスト命令が終わればmake testやらテストをしてデバッグして安定すればversion 2.0としてリリースします。
まあ、リリースと行ってもgithub上でしか配布していないので、単にpushするだけですが。
version 2.0がリリースできれば、かなり高速化される予定なので使ってやってください。うりはmixin-layersによる差分プログラミングです。まあ、僕のアイデアじゃないですけどね。10年くらい前にアスペクト指向が流行ったときに出てきた日本人の先生のアイデアです。C++でもmixin-layersが使える実装があったはずです。そちらで試してもらってもいいですけどね、、、。オリジナルはJVM上で動くMix-Juese(ミックスジュース。綴あっているかな?)って言う実装です。今も開発されているかは知りませんが。
差分プログラミングは僕自身が使ってみたかったので入れてます。大規模なソフトウェアでは有効な考え方で、もっと注目されてもいいと思います。