今日は at_exit で登録した終了処理で例外を rescue した時の修正の手直しなど最近の変更の微調整が主でした。
nobu:r35085 2012-03-19 00:21:00 +0900
r34982 で at_exit で登録した終了処理の中でのエラー処理を考慮して rb_thread_t::errinfo のバックアップを取っておく変数 errinfo に volatile を付加しています。コメントによると setjmp/longjmp から保護するためらしいとのこと。そうかレジスタにのせられてしまうと longjmp した時に元に戻ってしまいますね。
nobu:r35086 2012-03-19 00:21:04 +0900
NUM2???() 系の変換マクロ/関数のテストのための拡張ライブラリで、NUM2LL, NUM2ULL のチェックは long long 型が利用可能な時だけにしています。また sprintf() に渡す指示子に PRI_LL_PREFIX マクロを利用するようにしています。
svn:r35087 2012-03-19 00:21:04 +0900
version.h の日付更新。
shyouhei:r35088 2012-03-19 15:08:44 +0900
PTY のテストでプラットフォームの制限で例外が発生する場合があるので skip するようにしています。
nobu:r35089 2012-03-19 15:20:55 +0900
compile.c で if ... else if ... で else if をたくさん並べていたところを switch 文で書き直して、共通した処理をマクロでコンパクトに書くようにしています。 https://github.com/ruby/ruby/pull/105
shugo:r35090 2012-03-19 15:41:02 +0900
Enumerator::Lazy の rdoc に cycle と zip にはブロックが渡されるとその場で値が評価される(遅延評価されない)ことを追記しています。 [ruby-core:43344] [Bug #6158]
shugo:r35091 2012-03-19 16:39:12 +0900
r35049 と同様に rb_rescue2() の可変長引数に 0 をそのまま渡しているのを明示的に VALUE にキャストするようにしています。sizeof(VALUE) != sizeof(int) の時のためです。
shugo:r35092 2012-03-19 17:22:29 +0900
Enumerator::Lazy#flat_map でブロックが返した値が Array でない時には each を読んで要素を取得するようにしていたのを、each が NoMethodError を発生させたら to_ary で Array に変換して利用する方法を試すようにしています。 [ruby-core:43334] [Bug #6155]