[#45910] [ruby-trunk - Bug #6694][Open] Thread.new without block. — "ko1 (Koichi Sasada)" <redmine@...>

24 messages 2012/07/04

[#45913] [ruby-trunk - Bug #6698][Open] MacOSXではDir.globが返すファイル名の内容はUTF8-MACですがencodingがUTF-8になっている — "imkira (Mario Freitas)" <imkira@...>

10 messages 2012/07/04

[#45933] [ruby-trunk - Bug #6716][Open] FileUtils.mv でリンク先がないシンボリックリンクファイルを指定すると ENOENT エラーになる — "tommy (Masahiro Tomita)" <tommy@...>

8 messages 2012/07/10

[#45976] [ruby-trunk - Bug #6756][Open] FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない — "fumiyas (Fumiyasu SATOH)" <fumiyas@...>

9 messages 2012/07/20

[#46012] [ruby-trunk - Feature #6812][Open] Refactor gc.c — "authorNari (Narihiro Nakamura)" <authorNari@...>

13 messages 2012/07/30

[ruby-dev:46016] [ruby-trunk - Feature #6812] Refactor gc.c

From: "authorNari (Narihiro Nakamura)" <authorNari@...>
Date: 2012-07-30 23:21:31 UTC
List: ruby-dev #46016
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/

In This Thread