Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

2017-07-01から1ヶ月間の記事一覧

JITのデバッグ

現在./configure --with-jitは動きません。 だいぶデバッグも進んできました。今日やった分では概ね動く様子です。 基礎ライブラリを動かすにはいくつかバグがありそうですが、そんなに大物バグが無いような気がします。 とりあえず、命令個別のテストが全部…

JITのデバッグ

現在./configure --with-jitは動きません。 デバッグもだいぶ進んできました。キャストは問題なく動いている様子です。 あとは基礎ライブラリをJITで動かしていきます。 すんなり行かないと思いますが、まあ、ぼちぼちやっていきます。 あと、2,3個大物バグ…

JITのデバッグの続き

現在./configure --with-jitは動きません。 手強い例外処理のバグを修正しました。ネストするtryはできなくなりましたが、とりあえずバグを修正できました。 tryのネストができないのは仕様にするかもしれません。 後は、キャスト関連で変数を全部64bitで扱…

JIT高速化の続き

色々とちゃんとした処理になおしています。 OP_LOAD, OP_LOAD_FIELD, OP_LOAD_CLASS_FIELDでは全部64bitで処理されてましたが、ちゃんと型を設定するようにしました。 キャストの処理もそのせいでバグが見つかって直しています。 後は手強い例外処理にまたバ…

JIT高速化の続き

現在./configure --with-jitは動きません。 とりあえず、全命令JIT化したのは良いですが、バグがあります。 現在基礎ライブラリを全てJITで動かすのを目標にデバッグしてます。 その次はmake testをJITで動かします。 それで完成ですね。 今日は例外のバグを…

JIT高速化の続き

現在./configure --with-jitは動きません。 とりあえず、キャスト命令のJIT化は全部終わったはずです。確認はしていませんが。一応全部の命令のJIT化は終わったと思います。 明日以降確認してみます。後はテストですね。デバッグがあります。 全ての基礎ライ…

JIT高速化の続き

現在./configure --with-jitは動きません。 とりあえず、キャスト命令もあとはラッパークラスからプリミティブ型へのキャストのみとなりました。 問題はテストが通るかどうかですが。 明日は夜勤なので、昼間にちょっとコーディングしようと思います。 速度…

JIT高速化の続き

現在./configure --with-jitは動きません。 ようやくキャスト命令の3/4くらいが終わりました。 キャスト命令さえ終われば、高速化も終わりです。 後はmake testなどテストをしてデバッグが上手く行けばversion 2.0としてリリースしたいと思います。 7月中に…

JIT高速化の続き。

現在./configure --with-jitは動きません。 キャスト命令のJIT化をしています。だいぶ進んでます。 FloatとDouble型への変換が終わりました。 後晩にももう少し進めたいと思います。

JIT高速化の続き

現在./configure --with-jitは有効ではありません。 キャスト命令のJIT化をはじめました。LLVM上では複数の命令が同じ命令として扱えるので、かなり早く終わりそうです。 来週中?現職を辞める前には終わるかもしれません。 来週は忙しいですが、コーディン…

JIT高速化の続き。

現在./configure --with-jitは動きません。 まだキャスト以外の命令が残ってました。今度こそ残りはキャスト命令のみとなります。 7月末までにはリリースできそうです。それで、本当にのらプログラマー引退すると思います。拡張ライブラリを書けるようにした…

JIT高速化の続き。

現在./connfigure --with-jitは動きません。 とりあえず、キャスト命令以外のJITの命令は終わりました。 結構多かったです。 後はぼちぼち膨大な数があるキャスト命令を終えていきます。 どれくらい速くなっているか、楽しみです。

LLVM高速化の続き

現在./confiugre --with-jitは動きません。 とりあえず、だいぶ進んでます。キャスト以外の命令はほとんど終わりですかね。後はアドレスを取る命令辺りかな。 OP_INVOKE_DYNAMIC_METHODも動いてます。 今回のJITはVMのスタックを使わずにLLVM用のスタックを…

JIT高速化の続き

OP_INVOKE_VIRTUAL_METHODを実装しました。インタフェースのメソッドの実行ができます。 先日後は膨大なキャスト命令だけだと書きましたが、大事なのを忘れてました。 あとはOP_INVOKE_DYNAMIC_METHODもまだなので、今日の晩辺り、それを書いておきます。 と…