From: SASADA Koichi Date: 2007-12-29T15:36:49+09:00 Subject: [ruby-dev:32889] Re: emptstack dumps core  ささだです。 Yusuke ENDOH wrote: > 07/12/29 に Yusuke ENDOH さんは書きました: >> とりあえず emptstack の使用をあきらめる応急処置のパッチです。 >> ただし性能劣化はそれなりにある予感がします (調べてません) 。 > (snip) > > このパッチにはバグがありました。このパッチだと以下で落ちます。  どうもありがとうございます。これは、こないだ IRC にいっていたよう に、抜本的な改造が必要だと思っています(explicit に sp を調べる方法)。  今あるアイデアは、 - while の先頭など、あわせなければならない場所にラベルを置く (L) - emptstack の代わりに adjuststack L のような命令を置く adjuststack は仮想的な命令 - 最後のコンパイル時、L の sp を見て、adjuststack を pop を続ける命令に置き換える  ただし、これだと sp の計算のために 1 pass 増えてしまうという欠点が あります。先日遠藤さんが言っていたように、compile_each 実行中に sp を計算するのが一番シンプルですよね。ADD_INSN 等等で sp を計算するの がいいのかもしれませんが、真剣に考えてみないとちょっと自信がありませ ん。もしこれが現実的に可能だとすると、上記 adjuststack を挿入する部 分はそのまま pop 命令に置き換えられますね。 -- // SASADA Koichi at atdot dot net