2008-09-23
llvmrubyを使ってみた
|少しいじってみました。主にRubyのJITを目指しているruby_vm.rbあたりを主にいじっています。
面白いのですが、まだちょっと完成度が低く感じます。
気づいたこと
- Ruby 1.9.0でも古いバージョンを使っているような気がします。新しいバージョンだと動かないところがちょくちょくあります。
- Symbolをllvmの形式に変換するSymbol#llvmがうまく動かないようです。みてみるとこれでいいような気がするのですが、なぜかうまく行きません。Symbol#llvmは変数の参照で結構使われていますが、rb_to_idへの引数として使うときは、foo.llvmの代わりにfoo.to_s.llvmとするととりあえず動きます。速度は遅そうですが。
- :branchif, :unless, :jumpなどでラベルが使えません。そういうことで、RubyVM::InstructionSequence.compileでコンパイルしてJITで高速実行といったことはまだ出来ないようです。
そういうことで、完成度は低いのですが方向性はばっちりです。すぐにJITが実現されるのではないでしょうか。
オブジェクトファイルがでかいのが欠点ですが。私のところではllvmruby.soが16MBytes以上あります。
コメントを書く
トラックバック - http://d.hatena.ne.jp/miura1729/20080923/1222175356
リンク元
- 15 http://www.rubyist.net/~kazu/samidare/
- 5 http://209.85.171.104/translate_c?hl=en&sl=ja&tl=en&u=http://d.hatena.ne.jp/miura1729/20080923/1222175356&usg=ALkJrhi2hsR7OuFyg2KUou7qrkuY1y18vQ
- 3 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4ADBF_jaJP277JP278&q=RFC+1213+
- 2 http://www.google.com/search?client=safari&rls=ja-jp&q=llvmruby&ie=UTF-8&oe=UTF-8
- 1 http://a.hatena.ne.jp/fujita-y/
- 1 http://a.hatena.ne.jp/h_sakurai/
- 1 http://counter.hatena.ne.jp/takihiro/log?cid=1&date=&type=
- 1 http://d.hatena.ne.jp/authorNari/?of=10
- 1 http://d.hatena.ne.jp/gamella/20080329/1206760587
- 1 http://d.hatena.ne.jp/keyword/コンパイル