From: "authorNari (Narihiro Nakamura)" Date: 2012-07-31T08:21:31+09:00 Subject: [ruby-dev:46016] [ruby-trunk - Feature #6812] Refactor gc.c Issue #6812 has been updated by authorNari (Narihiro Nakamura). ko1 (Koichi Sasada) wrote: > パッチを細かく見てないんですが,確認させて下さい. > > (2012/07/30 17:07), authorNari (Narihiro Nakamura) wrote: > > gc.cがごちゃごちゃしてきたので見通しがよくなるようにvm_xx.cみたいにファ > > イルを分割しました。この修正ではCやRubyレベルのAPIの変更はありません。 > > # 2ヶ月前の開発会議で議論していた件です。 > > # http://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20120601 > > > > 変更内容は以下のURLで閲覧できます。 > > https://github.com/authorNari/ruby/commit/11e4bffd9e3 > > > > パッチは以下のとおりです。 > > https://github.com/authorNari/ruby/commit/11e4bffd9e3.patch > > > > 改善案や意見等ありましたら教えていただけると嬉しいです。 > >  方針は賛成です. > >  確認したいんですが,コードを移動しただけでしょうか.それとも,gc.c 内 > のコードも結構変わってる漢字でしょうか. > > ファイル分割する都合で何個か関数を追加してますが、基本的には移動しただけです。 > > = パッチの簡単な解説 > > > > 以下のような階層で分割しています。 > > > > + gc.c > > +-- gc_alloc.[ch] > > +-- gc_ms.[ch] > > +-- gc_ms_heap.c > > +-- gc_ms_profiler.c > > > > それぞれのファイルの簡単な説明は以下のとおりです。 > > > * gc_alloc.h > > メモリアロケータで実装すべき関数が定義される > > (ruby_xmallocなど) > > > > * gc_ms.h > > GCに実装すべき関数などが定義される > > (gc_markなど) > >  *.h って要りますか? インターフェースを切るとき,こっちのほうがよかっ > たりするんだろうか. > インタフェースとなる関数とかデータ構造がまとまってたほうが読みやすいかなと思ったんですが、いらないかもですね。 > > * gc_ms_heap.c > > GC対象のヒープに依存するコードを記述 > >  heap.h は不要でしょうか. > >  あと,heap の構造は ms(mark & sweep)に依存するでしょうか.たしかに > copying とかするならバッサリ変わる気がする.が,変わる可能性はあるんだろ > うか. > 現在はheapの構造に依存しています。完全に依存なくすとしたら結構大変ですね。 MostlyCopyingの可能性はありますが、当分は入らないと思いますので無視して いいかもしれません。 >  実は,その辺を mmap で一度に沢山とっておいて云々,ってのを以前放り出し > ていたのに再チャレンジしたいと思っているんですが,その場合,ms_heap とい > う名前なのかなと考えたのでした. > なるほど。なるべくGC周りをいじりやすくしたいので、ヒープ構造に依存しないように作り 直してみます。 > -- > // SASADA Koichi at atdot dot net ---------------------------------------- Feature #6812: Refactor gc.c https://bugs.ruby-lang.org/issues/6812#change-28555 Author: authorNari (Narihiro Nakamura) Status: Open Priority: Normal Assignee: authorNari (Narihiro Nakamura) Category: core Target version: 2.0.0 nariです。 gc.cがごちゃごちゃしてきたので見通しがよくなるようにvm_xx.cみたいにファ イルを分割しました。この修正ではCやRubyレベルのAPIの変更はありません。 # 2ヶ月前の開発会議で議論していた件です。 # http://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20120601 変更内容は以下のURLで閲覧できます。 https://github.com/authorNari/ruby/commit/11e4bffd9e3 パッチは以下のとおりです。 https://github.com/authorNari/ruby/commit/11e4bffd9e3.patch 改善案や意見等ありましたら教えていただけると嬉しいです。 = パッチの簡単な解説 以下のような階層で分割しています。 + gc.c +-- gc_alloc.[ch] +-- gc_ms.[ch] +-- gc_ms_heap.c +-- gc_ms_profiler.c それぞれのファイルの簡単な説明は以下のとおりです。 * gc_alloc.h メモリアロケータで実装すべき関数が定義される (ruby_xmallocなど) * gc_ms.h GCに実装すべき関数などが定義される (gc_markなど) * gc_alloc.c メモリアロケータ周りのコードを記述 * gc_ms.c GCアルゴリズム周りのコードを記述 * gc_ms_heap.c GC対象のヒープに依存するコードを記述 * gc_ms_profiler.c GCのプロファイラ周りのコードを記述する場所 -- http://bugs.ruby-lang.org/