From: SASADA Koichi <ko1@...>
Date: 2013-02-20T04:12:12+09:00
Subject: [ruby-dev:47053] Re: [ruby-trunk - Bug #7878] E::Lazy#grep ignores ^C

(2013/02/19 21:20), mame (Yusuke Endoh) wrote:
>> なぜ私が、と思ったんですが、遠藤さんいい読みですね。
> 
> RUBY_VM_CHECK_INTS なんだから笹田さんでしょう。

 てっきり、Lazy cycle 内でなんか凄いことをやっているのかと思っておりま
した。enum.c のほうに変更入れるなら私じゃないだろう、と。

> ko1 (Koichi Sasada) wrote:
>> r39308 で取り急ぎ対応しました。
>>
>> mameさん
>> backport してもいいでしょうか。
> 
> RUBY_VM_CHECK_INTS したらまずいところで RUBY_VM_CHECK_INTS してしまう副作用がないかが大変気になる(具体的に心当たりがあるわけではない)のですが、大丈夫ですかね? 自信があるなら OK です。

 これに関して、実は 1.9.3 に戻したというのが実情です RUBY_VM_CHECK_INTS
を外して綺麗になって速くなるかな、と思ったんですが、ちょっとこの挙動(C
method の繰り返しの中で rb_funcall している)を思いつかなかったので、デ
グレ対応と言えるかと思います。というわけで、自信があります。

 本当は、もうちょっと綺麗になりそうだな、という手段を思いついたのです
が、怖いので 1.9.3 相当に戻す、という対応になっております。具体的には、
vm_call0_body() の冒頭、 th->passed_block をクリアした後に CHECK_INTS す
ればよい、はず。ただし、影響が読めないので、2.1 送り。

 よろしくお願いします。

-- 
// SASADA Koichi at atdot dot net