yarv-dev:331
From: Yukihiro Matsumoto <matz ruby-lang.org>
Date: Mon, 22 Nov 2004 11:25:22 +0900
Subject: [yarv-dev:331] Re: support rb_yield
まつもと ゆきひろです In message "Re: [yarv-dev:330] support rb_yield" on Mon, 22 Nov 2004 03:10:59 +0900, SASADA Koichi <ko1 atdot.net> writes: | for (i=0; i<end; i++) { | rb_yield(LONG2FIX(i)); | } | | のような部分を、 | | thread_yield_light_prepare(th, 1, &val); | for(i=0; i<end; i++){ | val = LONG2FIX(i); | thread_yield_light_invoke(th, 1, &val); | } | | のように変更する、という工夫です(thread_yield_light_prepare |がコストの高い VM loop のための初期化処理を行う)。 ブロックが渡されたメソッドはブロックを呼び出す確率が高いとい うことで、呼び出し前にthread_yield_light_prepare()のようなこ とができれば良いのではないかと思います。現状のAPIではローカ ル変数のアドレスを取っているので不可能ですが。 まつもと ゆきひろ /:|) -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
330 2004-11-22 03:10 [ko1 atdot.net ] support rb_yield -> 331 2004-11-22 11:25 ┗[matz ruby-lang.org ] 332 2004-11-22 16:12 ┗[ko1 atdot.net ] 333 2004-11-23 00:02 ┗[matz ruby-lang.org ]