今日は利用する malloc 実装を jemalloc にする configre の --with-jemalloc オプションの追加がありました。
normal: r46349 2014-06-05 04:34:03 +0900
configure に --with-jemalloc というオプションを追加して、指定されたら -ljemalloc をつけてビルドするようにしています。おお、これだけでいいの? お手軽だなぁ…そう考えていた時期がわたしにもありました(数分)。 [ruby-core:62912]
svn: r46350 2014-06-05 04:34:14 +0900
version.h の日付更新。
ko1: r46351 2014-06-05 10:05:07 +0900
obj_free() で世代のフラグを管理しているビットマップをクリアする時の条件をビットマップのビットが立っているかのチェックだけでなく struct RBasic::flags のフラグもチェックするようにしています。ううむ、これはなぜかな…。フラグをみればビットマップのチェックが不要になるから効率的だからでしょうか。でも RGENGC_AGE2_PROMOTION がデフォルトで有効な現在の trunk では結局ビットマップもチェックするから…と思ったけど false の時はビットマップをみなくて良くなるわけですね。
hsbt: r46352 2014-06-05 12:47:46 +0900
misc/README の ruby-debug のプロジェクトの rubyforge.org へのリンクを GitHub のリポジトリへのリンクに変更しています。 rubyforge.org はサイト運営を終了したのでリンク切れになったためですね。
nobu: r46354 2014-06-05 14:16:46 +0900
r46349 の configure --with-jemalloc の変更ですが、jemalloc/jemalloc.h ヘッダの存在もチェックして include/ruby/missing.h で #include するようにしています。 また io.c、dln.c、parse.y、st.c で malloc/callloc/realoc/free などをマクロ定義しているところで、(これらがマクロとして定義されている可能性を考慮して)その前に #undef しておくようにしています。 [ruby-core:62939] [Feature #9113]
nobu: r46355 2014-06-05 14:36:28 +0900
ruby -v で malloc_conf という利用している malloc 実装を判別するための定数を表示するようにしています。そのため jemalloc を使わなくても jemalloc/jemalloc.h は(あれば) #include しておくようにしています。 [Feature #9113]
malloc_conf って jemalloc を使わなくても意味がある表示になるんですかね?
ko1: r46356 2014-06-05 16:14:53 +0900
gc_page_sweep() で T_ZOMBIE のオブジェクトの時に empty_slots をカウントアップしないようにして、sweep_page->final_slots に final_slots を代入していたのを加算するように修正しています。
akr: r46357 2014-06-05 18:16:57 +0900
io/nonblock のテストで Thread の終了待ちをするように修正しています。