ruby-trunk-changes r45945 - r45952

今日は mingw のマシンスタックオーバフロー検出の実装やメモリ管理のページ確保の小さな変更などがありました。

nobu: r45945 2014-05-15 15:39:43 +0900

拡張ライブラリ openssl の depend ファイルに thread_native.h を追加しています。 [ruby-core:61378] [Feature #9612]

svn: r45946 2014-05-15 15:39:52 +0900

version.h の日付更新。

nobu: r45947 2014-05-15 17:32:55 +0900

r43748 で Windows 版のマシンスタックオーバフロー検出をしましたが、mingw では __try/__except がサポートされていないことから対象外だったのですが、Structured Exception を利用して mingw 向けの実装も追加しています。
[追記]コメント欄も参照してください。ここで利用しているのは Vectored Exception Handling という機能を利用した Structured Exception の実装方法とのことです。egtra さんコメントありがとうございます。[/追記]

ko1: r45948 2014-05-15 18:43:18 +0900

メモリ管理で page を解放するタイミングを調節するための空き slot の割合をソース内にマジックナンバーとして書いていたのを GC_HEAP_FREE_SLOTS_MIN_RATIO/GC_HEAP_FREE_SLOTS_MAX_RATIO というマクロとして定義するようにしています。コンパイル時に -D などで定義することで指定することもできるようにしています。

ko1: r45949 2014-05-15 18:54:49 +0900

gc.c の heap_set_increment() を heap_extend_pages() と分離するリファクタリングをして、gc_heap_prepare_minimum_pages() や heap_ready_to_gc() から heap_set_increment() を呼ぶときは 1ページだけ追加するようにしています。

ko1: r45950 2014-05-15 18:58:21 +0900

gc.c の gc_heap_prepare_minimum_pages() の呼び出しを gc_sweep() の最後から garbage_collect_body() へ移動しています。 プロファイラのタイマーを止めた後にページ追加するようにしているってことでしょうか。

kazu: r45951 2014-05-15 19:34:57 +0900

r45947 の ChangeLog エントリの typo 修正。

nobu: r45952 2014-05-15 19:53:40 +0900

r45949 での gc.c のインデント修正。