From: "authorNari (Narihiro Nakamura)" Date: 2012-07-31T17:26:56+09:00 Subject: [ruby-dev:46021] [ruby-trunk - Feature #6812] Refactor gc.c Issue #6812 has been updated by authorNari (Narihiro Nakamura). shyouhei (Shyouhei Urabe) wrote: > On 2012年07月31日 10:48, authorNari (Narihiro Nakamura) wrote: > >> 個人的には ms で mark & sweep 以外無いだろう,と思ったので,あまり違和感 > >> が無かったのですが.... > > いくらなんでも2文字じゃあちょっと > > > > なるほど…。 > > > > 個人的にはgc.c自体は変える気はなく、gc.cにincludeされるファイルの名前なのでアルゴリズム名もありかと思っています。 > > アルゴリズムが変わったらファイル名も変えればいいかなと。 > > ですので、gc_mark_sweep.cあたりでどうでしょうか。 > > > > # ちなみにHotspotVM界隈ですとCMSとか平気で名付けるようです。 > > たとえば今後RubyにもG1GCが実装されてgc_g1gc.cができたら「G1GCはmark&sweepじゃ > ないんかい」的なツッコミは当然入るのではないでしょうか。 上記の発言から読み取ると卜部さんがご指摘されているのは以下の2点と考えて よろしいでしょうか? * msは何の略かわからないので避けるべき * そもそもmark_sweepをファイル名に出すのはよくない * mark_sweepの別のgcを実装するときに違うファイル名になると混乱するから もうすこし抽象的なファイル名にするとしたらやはりgcを使いたいので、 ささださんがおっしゃったように現在のgc.cをなんらかの名前に改名して、 xx_gc.cを新しく作ったほうがスッキリしそうですね。 ---------------------------------------- Feature #6812: Refactor gc.c https://bugs.ruby-lang.org/issues/6812#change-28569 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/