Clover2開発日誌

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

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

JITのバグを修正。

if文とかfor文とかをネストすると落ちるバグを修正。 まだJITにはバグがあると思いますので、ぼちぼちデバッグしていきます。 しばらくはバグが有ることを許してください。 申し訳ないです。JITなしだと、とりあえず安定しているので JIT無しで使っていただ…

LLVMによるJITが完成しました。

ついにやりました。全VMの命令をJIT化しています。 処理速度はまだ測ってませんが、だいぶ速くなると思います。 良かったら、試してください。 今日は奥さんの料理で打ち上げします。楽しみです。 贅沢に本物のビール2本飲もうかな。明太子も出してもらおう…

いよいよJIT化のフィナーレです

LLVMによるJIT化があと少しで終わります。 膨大なキャスト命令をだいぶJIT化しました。 ほとんどvimのコピペとマクロで作ってます。うーむ、vimは便利。 後はアセンブラでキャストする部分だけですね。 終わったら、家族に言って、打ち上げしてもらいます。 …

ちょっと無理してキャストのJIT化を大幅に進めました。

お題のとおりです。ちょっと疲れました。 キャスト命令の全体の1/2くらい進めた感じです。 後はのんびり進めます。 問題は速度が出るかですねぇ。演算子以外アセンブラで書かずに C関数を呼んでいるだけの部分が多いので速くなるか謎です。 後家のサーバーは…

キャスト以外の命令のJIT化に成功

テストはいまいちやってませんが、一応動いています。 キャスト以外の命令のJIT化に成功してます。 後はキャスト命令のJIT化していきます。 まあ、凄い分量があるので、ぼちぼちですね。 やはり予定通りLLVMによるJITの完成は6月下旬になりそうです。 今日は…

キャスト以外の命令のJIT化がだいぶ進みました

お題のとおりです。明日以降キャスト以外の命令をJIT化してから、大量にあるキャスト命令のJIT化をしたいと思います。 山場だと思っていたOP_INVOKE_VIRTUAL_METHOD, OP_INVOKE_DYNAMIC_METHODなどはCの関数を呼ぶだけで簡単に実装できました。ブロックの呼…

全演算子をJIT化

タイトル通り全演算子をJIT化できました。 ちょっとテストが足りていないので、バグがあるかもしれませんが、多分、大丈夫だと思います。 あとは山ほどあるキャストをJIT化していきます。 見るだけでゲンナリするほど量がありますが、少しずつ進めたいと思い…

JITで演算子の実装を進めました

今回の収穫はキャストの仕方がわかったことですね。 とりあえず、僕のVMにはキャストが山ほどあるので、それが山場だと思っていたので、それがなんとかなりそうだと分かり、ほっとしてます。 あとは道なりに全部の命令をJIT化していきます。 問題は速くなる…

JITで補数の単項演算子を追加

JITで補数の単項演算子を追加しました。 だいたい全体の1/2くらいの進捗ですかね。 ぼちぼち残りの1/2やっていきます。 重要な命令はほとんどできているので、後はキャストやfloat, doubleの演算子辺りが山場ですかね。 大体来月末にはJIT付きのVMでversion …

LLVM化は続く

とりあえず、byte,ubyte,short,ushort,int,uint,long,ulongの2項演算子は出来ました。全体の1/4か1/3くらいの進捗だと思います。 早ければ今月末か来月末には終えられると思います。 その後は拡張ライブラリを書くためにSystemクラスにLoadLibrary?でした…

LLVM化進んでます

VMの命令を上から順番にLLVMに移植しています。 intからbyteへのキャストなどアラインメントが小さくなるキャストは意味がないとやっと気づいたので消去しました。 少し速くなったかもしれません。コンピュータに対する無知が知れてしまい恥ずかしい思いです…

LLVM化もだいぶ慣れてきました。

TRY文に対応しました。とりあえず、制御構文は対応できました。 あとは順次VMにある命令の上から一つづつLLVMに対応してます。 夏の終わり頃には終わるのではと言ってましたが、もしかしたら、春の終わりにはLLVMでのJITに対応できるかもしれません。 LLVM化…

JITで制御構文全部に対応

とりあえず、tryも動いています。tryがネスト出来ない問題は放置してますが。for, while, ifは多分大丈夫です。まだテストが足りない気がしますが。 まあ、ぼちぼちデバッグやらテストやら、やっていきます。 とりあえずは対応できたということで。 次は演算…

JITでfor文のテストが動きました

とりあえず、for文だけテストしました。最初動かなかったのですが、修正しました。tryとかもかなり動かないっぽいですけど、明日以降修正します。while文とif文は多分大丈夫だと思います。