解析はあんまり進まず。
ブロックがどうなってるのかちょっと気になった。 PST上でのDisassmeblyを見てみると、ちょっと特殊な感じで書かれてるけど、それっぽい命令は無いよなー。
おっと、ifTrue:とかはちゃんと判別して最適化されてるのね。 そうだよなぁ。わざわざ律義に実行する必要も無いもんな。
Squeakとかはどうか知らないけど、PSTだとブロックはブロックを作ったスコープの外には持ち出せない。 Rubyで言うとeach等に渡すのは出来るけど、Procオブジェクトみたいにどこかに保存しておいて後で使うことは出来ない。
これは不便。 無くてもまあなんとかなると言えばなるけど、メソッドをたくさん作るのはいやなので、やっぱり不便。
実装するなら、そのスコープでのselfとローカル変数だけ保存しておけば良いような気がするんだけど? いや、ローカル変数への参照を保持しなきゃいけないのかな?そこまでする必要は無いと思うんだけど。
そういう方向で行くならコンパイル時に頑張るか、新しい命令を追加する必要があるかなぁ。 まあひとまず置いておいて、現在の実装を解析しなきゃいけないね。