Clover2開発日誌

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

LLVM高速化の続き

現在./confiugre --with-jitは動きません。

 

とりあえず、だいぶ進んでます。キャスト以外の命令はほとんど終わりですかね。後はアドレスを取る命令辺りかな。

OP_INVOKE_DYNAMIC_METHODも動いてます。

今回のJITVMのスタックを使わずにLLVM用のスタックを使っているので、凄く命令が短くなっています。最適化もフルでONになっています。

どれくらい速くなるか楽しみです。

3秒かかっていた命令が1秒以下になったりして、、、わくわくします。

Clover2の利点ですが、とりあえず、オープンクラスとmixin-layersによる差分プログラミングです。組み込みのクラスさえも機能拡張することができます。欠点は継承が無い所かもしれません。

継承あんまり好きじゃないんですよね。無いお陰で凄くスッキリした仕様になってます。その代わりインターフェースとモジュールがあるので似たようなことはしようと思えばすることはできます。

ちょっとモジュールとインターフェースを使ったポリモフィズムのソースはダサい感じになりますが、、、やっぱり継承の方がスッキリしたソースになりますね、、、。うーん。

インタフェースとモジュールを組み合わせて、なんか作りますかね。

実装付きインタフェースですかね。class A implements IntegerfaceWithModuleみたいな感じかなぁ、、、。