[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:594

From: SASADA Koichi <ko1 atdot.net>
Date: Sun, 21 Aug 2005 19:00:53 +0900
Subject: [yarv-dev:594] method dispatch type

 ささだです。

 今、メソッドディスパッチは、

・Ruby メソッド
・C メソッド
・その他諸々

 で、ディスパッチ手法を決めますが、これを少し増やそうと思っております。

・Ruby メソッド
・C メソッド
 a) C メソッド with スレッド情報
 b) C メソッド without スレッド情報
 c) C メソッド without スレッド情報・スタックフレーム生成
・その他諸々


 a と c が増えたわけですが、a はスレッド情報を渡してやる、c はスタック
フレーム生成を省略して呼び出すものを考えています。

 具体的には、a はスレッド情報を渡してやることで、スレッド情報を必要とす
る API を呼び出せるようにします。本当は b をなくして a にしたいのだけ
ど、それは互換性の問題から難しいため。

 c は、たとえば Array#size みたいなのはスタックフレームをつむ必要が無い
(実行中に rb_funcall などを行う必要が無い、バックトレースを表示する可能
性が無い)場合に限り、スタックフレームを新たに生成する必要はないので、軽
量化が期待できます。Fixnum#+ は coerce があるため駄目。

 どちらも、rb_define_method() に代わるメソッド登録 API を追加して、ディ
スパッチ手法を実行時に選択できるようにしようかと考えています。


--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

->     594 2005-08-21 19:00 [ko1 atdot.net       ] method dispatch type                    
       595 2005-08-21 19:45 ┣[matz ruby-lang.org  ]                                       
       596 2005-08-22 14:45 ┃┗[ko1 atdot.net       ]                                     
       644 2005-10-03 18:55 ┗[ko1 atdot.net       ]                                       
       645 2005-10-04 01:35  ┗[matz ruby-lang.org  ]                                     
       646 2005-10-04 08:36   ┗[ko1 atdot.net       ]                                   
       648 2005-10-04 08:50    ┗[matz ruby-lang.org  ]