«前の日記(2003年08月28日) 最新 次の日記(2003年08月30日)» 編集

Matzにっき


2003年08月29日 [長年日記]

_ [Ruby]local jumpの改善

ふと思い立ってeval.cの大改造。変更した点は以下のとおり

  • ブロック付きメソッド呼び出しのたびにBLOCKTAGオブジェクトを生成していたのを止めた
  • ブロック内からのreturnやbreakは妙なことをして伝達していたが、単純化
  • POP_TAGはreturn値をコピーしていたが、止めた。returnやbreakが直接設定する
  • ブロックのorphan判定を単純化。scopeがNOSTACKかどうかだけで判断する

試行錯誤でコーディングしているので、ここを直すとあちらが動かずなどということを繰り返しているうちに、 次第に全体像が頭に入ってきて、あるべき姿を理解できるようになった。こういうコーディングしているから、 いつまでたってもバグがなくならないんだろうなあ。

で、改造結果だが、構造はやや単純になったが、別に速くなったわけではないと思う。 しかし、なんだか達成感がある。

私がRubyをハックしているかたわらで、妻は手芸にいそしんでいた。夜中の3時まで。 お互いに夜更かしが過ぎます。


«前の日記(2003年08月28日) 最新 次の日記(2003年08月30日)» 編集