Hatena::ブログ(Diary)

miura1729の日記 このページをアンテナに追加 RSSフィード

2009-09-15

rb_get_method_bodyが無くなってる

17:54 |  rb_get_method_bodyが無くなってるを含むブックマーク  rb_get_method_bodyが無くなってるのブックマークコメント

Ruby 1.9.2 preview1にアップデートしたところ、yarv2llvmが動かなくなりました。

よく見ると、rb_get_method_bodyが無くなっている模様です。おそらく、nodeをGC対象外にする話の一貫じゃないかなと思います。ちょっと追ってみると、vm_method.cで定義されているrb_get_method_entryが代わりに使えそうです。また、この結果の構造体(rb_method_entry_t)は、method.hで定義されています。

見てみると、rb_get_method_bodyと違ってメソッドキャッシュを使うか使わないかをレイア分けしてあったり(rb_get_method_bodyでは引数にnullを入れるかどうかで判断)、rb_method_entry_tにメソッドの詳細な情報が格納されていていい感じです。

たぶん新しいバージョンに対応するのはすぐなんですが、古いバージョンで動くようにすべきかちょっと迷っています。yarv2llvmのユーザは一人なんだから、常にRubyの最新版しか動きませんでもいいかなと思いますけど、万が一他にユーザがいたら申し訳ないので使っている人がいたらコメントで意見ください。あと、LLVMも2.6になると互換性がかなり失われるのでどうしようかなーと思います。

トラックバック - http://d.hatena.ne.jp/miura1729/20090915/1253004853