今日は 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() へ移動しています。 プロファイラのタイマーを止めた後にページ追加するようにしているってことでしょうか。
nobu: r45952 2014-05-15 19:53:40 +0900
r45949 での gc.c のインデント修正。