From: SASADA Koichi Date: 2007-12-18T21:29:33+09:00 Subject: [ruby-dev:32627] Re: SEGV by test/ruby/test_fiber.rb  ささだす.  返事が遅れてすみません. Yusuke ENDOH wrote: > まず、vm_invoke_block も vm_setup_method も vm_callee_setup_arg を > 呼ぶ前はargv がスタックトップに置かれていると思います。 > > sp > v > -+--+--+--+--+--+ > ... | argv... | ? ? ? ? > -+--+--+--+--+--+ > > # ささださんが「スタックトップの先に,VALUE 以外の値が入っていない > # ことを保証できない」とおっしゃっているのは、? の部分に何が入って > # いるかわからないということでしょうか。それは同意します。  はい. > vm_invoke_block と vm_setup_method でこんな風に sp の扱いが異なるのは > 意図的なんでしょうか。  意図的ではありません.いつの間にかこんなことになっていた,という感 じです.歴史的経緯としては,ここの処理をくっつけたのが最近,というの があります. > 私は sp の扱いを共通にすべきと考え、vm_setup_method でも sp をずらす > (cfp->sp -= argc;) パッチを書きました。  どちらかというと,sp が argv の場所にあるほうが色々な意味で嬉しい なぁ,と思っていました. (1) sp の計算が一回減る (2) gc_mark_maybe の回数が減る  いや,どちらも影響無いに等しいんですが....うーん,どうしようかな. -- // SASADA Koichi at atdot dot net