[#46329] [ruby-trunk - Feature #7252][Assigned] version number of 2.0 release — "usa (Usaku NAKAMURA)" <usa@...>

26 messages 2012/11/01

[#46350] RubySpecメンテナ — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2012/11/02
[#46352] Re: RubySpecメンテナ — Urabe Shyouhei <shyouhei@...> 2012/11/02

On 11/01/2012 07:43 PM, Yukihiro Matsumoto wrote:

[#46414] [ruby-trunk - Bug #7287][Open] please rename atomic.h which conflicts with /usr/include/atomic.h in Solaris10 — "ngoto (Naohisa Goto)" <ngotogenome@...>

10 messages 2012/11/06

[#46434] トラップハンドラで許されない操作はなにか — KOSAKI Motohiro <kosaki.motohiro@...>

GyRCPi46aiRHJDkbKEIKCltCdWcgIzcxMzRdIBskQiRyRDQkWSRGJCQkRj88SiUkSjtFTU1MZEJq

9 messages 2012/11/06

[#46440] [ruby-trunk - Bug #7300][Open] Hash#[] の挙動が 1.9.3 と異なっている — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>

12 messages 2012/11/07

[#46477] Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...>

refinement を導入するときの性能に対する excuse が「method cache に殆どあ

20 messages 2012/11/11
[#46480] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/11

前田です。

[#46488] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...> 2012/11/12

 ささだです.

[#46491] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/12

前田です。

[#46493] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...> 2012/11/12

 ささだです.

[#46495] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/12

前田です。

[#46497] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — SASADA Koichi <ko1@...> 2012/11/12

(2012/11/12 18:20), Shugo Maeda wrote:

[#46501] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Shugo Maeda <shugo@...> 2012/11/12

前田です。

[#46513] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo): — Nobuyoshi Nakada <nobu@...> 2012/11/14

なかだです。

[#46509] [ruby-trunk - Bug #7344][Open] gem pristine bigdecimal が失敗してしまう — "hsbt (Hiroshi SHIBATA)" <shibata.hiroshi@...>

31 messages 2012/11/13

[#46520] [ruby-trunk - Bug #7356][Open] ruby-2.0.0-preview1 で adlint-2.6.10 が性能劣化 — "yanoh (Yutaka Yanoh)" <yutaka@...>

11 messages 2012/11/15

[#46647] [ruby-trunk - Bug #7452][Assigned] Main thread is stopped after running finalizers if the main thread has a finalizer — "mrkn (Kenta Murata)" <muraken@...>

8 messages 2012/11/28

[ruby-dev:46480] Re: Fwd: [ruby-changes:25559] shugo:r37616 (trunk): * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo):

From: Shugo Maeda <shugo@...>
Date: 2012-11-11 06:01:03 UTC
List: ruby-dev #46480
前田です。

2012/11/11 SASADA Koichi <ko1@atdot.net>:
> refinement を導入するときの性能に対する excuse が「method cache に殆どあ
> たるから,(refinement に関係無い部分の)性能低下はない」という話だった
> と思うのですが,今回のコードを見ると,それなりにメソッド探索コストが増え
> そうな気がするんですが,いかがでしょうか.
>
> 昨日相談させて頂いたとおり,実装としては refinement は
>  - メソッド探索から refinement 関係の処理を削除
>  - 探索したメソッドが refine されたメソッドだったら,
>    その時点で適切なメソッドを呼び出す
> のが良いと思います.

上記の変更の前に、とりあえずテストの追加と、それが通るような修正をしています。
ただ、上記の変更って私が実装するという話なんでしたっけ?

だとすると、もうちょっと細かいところを確認したいです。

基本的なアイデアは、refine対象のクラス(refineの引数)のメソッドにrefineされたこと
を表す印を付けておいて、通常のメソッド探索でそのメソッドが見つかった時にはじめて
refinements専用のパスで探索するということですよね。

以下のような疑問があります。

* refineされたことを表すmethod entryの構造をどうするか
  rb_method_type_tにVM_METHOD_TYPE_REFINEDみたいなのを追加するんでしたっけ。
  もとのmethod entryはrb_method_entry_t::def->bodyとかから参照するんですかね。
* refineした時にrefine対象クラスにメソッドがない時はどうするか
  メソッドがない時も常にrefineされたことを示すmethod entryを追加する?
* refineされたメソッドの呼出時にrb_call_info_tにどういう情報を格納するか
  Twitterでは、refineされたことを示すmethod entryを入れておくということでしたが、
  今のvm_call_methodの構造だとrb_call_info_tの中身を書き換えてgotoするような
  形になっているので、どういう変更を意図されているのかよくわかりませんでした。

-- 
Shugo Maeda

In This Thread