ruby-trunk-changes r41573 - r41586

今日も bignum.c のリファクタリングと RGenGC のための Write Barrier 漏れの修正などがありました。

akr:r41573 2013-06-23 00:02:08 +0900

bignum.c の rdoc 用コメントに一般的な実装を常に利用するようにする INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION フラグについて追記しています。

svn:r41574 2013-06-23 00:02:12 +0900

version.h の日付更新。

akr:r41576 2013-06-23 00:21:27 +0900

bignum.c に BDIGIT 型の MSB を取得するマクロ MSB() を追加して利用するようにリファクタリングしています。

akr:r41578 2013-06-23 00:52:36 +0900

bignum.c で配列が全て 0 で埋められていることをチェックする bytes_zero_p() マクロを定義して利用するようにしています。

akr:r41579 2013-06-23 01:29:43 +0900

r41578 で定義した bytes_zero_p() は即座に削除されて、このマクロなしでオーバフロー判定するように bary_pack() 側を書き換えています。また変数名の改名など。

ko1:r41580 2013-06-23 05:48:35 +0900

method entry 生成時に Write Barrier を挿入しています。また Module#include や Module#using で IClass を挿入する Class/Module やその IClass は method table を共有することがあり、メソッドが追加された時に Write Barrier で保護しきれないので OBJ_WB_GIVEUP() を呼んで両方を shady オブジェクトにするようにしています。

nobu:r41581 2013-06-23 05:51:06 +0900

r41580 の ChangeLog エントリの行末の空白除去。

ko1:r41582 2013-06-23 06:54:10 +0900

RGenGC の Write Barrier での保護ができない時に shady オブジェクトにするためのマクロや関数を OBJ_WB_GIVEUP() から OBJ_WB_UNPROTECT(), rb_obj_wb_giveup() から rb_obj_wb_unprotect()、rb_gc_giveup_promoted_writebarrier() から rb_gc_writebarrier_unprotect_promoted() などと改名しています。

akr:r41583 2013-06-23 07:43:47 +0900

bignum.c の bary_unpack_internal() において Visutal Studio でのコンパイラ警告の抑制のため整数の演算順序を変更しています。

akr:r41584 2013-06-23 08:20:22 +0900

bignum.c の bary_unpack_internal() からシンプルな 1 word の時の処理の共通部分を integer_unpack_single_bdigit() という関数に切り出すリファクタリング

ko1:r41585 2013-06-23 15:41:37 +0900

bootstraptest/test_thread.rb で Thread を大量に生成するテストでリソース不足のために ThreadError や NoMemoryError が発生した時にテストをエラーにしないようにしています。

akr:r41586 2013-06-23 17:30:49 +0900

bignum.c の integer_unpack_single_bdigit() で型の指定のために ((BDIGIT)0) - (...) のように定数0 に BDIGIT へのキャストを付けていましたが ((BDIGIT)(-(...))) のように本体の式に直接キャストをつけるようにしています。