今日は gc.c のリファクタリング(?)、bignum.c の最適化、マルチバイト NUL 終端文字対応の続きなどがありました。
zzak:r41989 2013-07-16 03:27:23 +0900
numeric.c の rdoc 用コメントの全体的なマークアップの修正や見易く整形したりなど。
svn:r41990 2013-07-16 03:27:29 +0900
version.h の日付更新。
zzak:r41991 2013-07-16 08:16:26 +0900
拡張ライブラリ bigdecimal で組み込みのクラスを拡張している ext/bigdecimal/lib/bigdecimal/util.rb で各組み込みクラスの rdoc 用コメントを追加しています。
glass:r41992 2013-07-16 11:22:17 +0900
昨日 r41983 で追加した rb_block_arity() でブロックが渡されていない時に呼ばれたら ArgumentError を発生させるようにしています。
glass:r41993 2013-07-16 11:25:54 +0900
io.c の appendline() の if 文の条件部分で代入していたのを、 if 文の前に出しています。
nobu:r41994 2013-07-16 13:32:09 +0900
r41964 を revert しています。マルチバイトの NUL 終端文字対応の一連の変更で enc_set_index() で終端文字の拡張もするようにしていたのですが、この関数は最初にエンコーディングを関連付ける時にも呼ばれる場合があるため元のエンコーディングを意識した処理を行う rb_str_fill_terminator を呼ぶのはまずかったそうです。
ko1:r41996 2013-07-16 15:10:56 +0900
r41995 で test-all が失敗するようになったそうで revert しています。
ko1:r41998 2013-07-16 16:33:48 +0900
gc.c の lazy_sweep() のループのリファクタリング。 is_lazy_sweeping() マクロを利用しないようにするのと一時変数を使って objspace->heap.sweep_slots を何度も参照しないようにしています。
ko1:r41999 2013-07-16 17:32:32 +0900
gc.c のリファクタリングみたいです。変数名の変更や free_list の操作を関数にまとめたりといった変更が行なわれているっぽいです。いろいろまとめて変更されてるので副作用がないのかいまいち自信がないですが……。
ko1:r42000 2013-07-16 17:46:15 +0900
gc.c から r41999 で追加した heaps_add_freeslot() で link_free_heap_slot() をおきかえています。
akr:r42001 2013-07-16 18:37:42 +0900
bignum.c の bary_mul_karatsuba() と bary_mul_toom3_branch() で引数に渡された整数(を表現する BDIGIT の配列)が同一のもの(二乗の計算)だったら不要なバッファの生成等を行なわないように最適化しています。
nobu:r42002 2013-07-16 18:45:00 +0900
r41994 の変更をカバーする UTF-16 や UTF-32 のエンコーディングの文字列での String#split のテストを追加しています。 [ruby-core:56036] [Bug #8642]
nobu:r42003 2013-07-16 18:50:11 +0900
Array#count の rdoc 用コメントの修正。 比較のために == メソッドを使っているのに === メソッドを使うと書かれていたのを修正しています。
akr:r42004 2013-07-16 19:08:25 +0900
bignum.c のシフト処理にて、シフト量が大きすぎると例外を発生させていたのですが、左シフト時は問題ですが右シフト時は元の数のビット数を越えたらいくら大きくても同じなので、エラーにしないようにしています。
ko1:r42005 2013-07-16 19:29:31 +0900
gc.c の新しいオブジェクトを確保する処理を書き直しています。struct objspace::freelist というフィールドを追加して free_slots の freelist のショートカットを保存するようにしているみたいです。その他関数の構成を変更したり。
akr:r42006 2013-07-16 19:44:27 +0900
bignum.c で不要になったマクロ定義を削除しています。
akr:r42007 2013-07-16 20:23:03 +0900
bignum.c の bigsrq() という関数を bigsq() に改名しています。はて、なぜでしょう。
glass:r42008 2013-07-16 21:13:19 +0900
configure で strcasecmp(3) の存在チェックをして st.c で独自の実装 st_strcasecmp() を使っていたところを可能なら strcasecmp(3) で置き換えるようにしています。strcasecmp(3) って locale によって大文字小文字の判定が変化したりしませんでしたっけ?
glass:r42009 2013-07-16 21:49:01 +0900
と思ったらやっぱり問題ありとされたらしく r42008 の strcasecmp(3) を使うようにする変更は revert されています。