まさとです.

一応,Rubyに世代別GCを実装してみました.

copyingを使うと実装に時間がかかってしまうので
双方向リストで実装してみました.

rubyのソースの中で古い世代から新しい世代への
参照が起こる可能性がある場所にhookをつけることで
remembered setを作っています.

ruby-1.4.4にあてるパッチを
http://ruri.csys.ce.hiroshima-cu.ac.jp/~masato/gc.patch.gz
に置いておきますので,興味のある方は試してみてください.
ただし,まだバグがあるようで,makeを2回しないと
うまくコンパイルされません(;_;)

最大でGCが5倍程速くなりました.
詳しくは,ゼミで発表した資料を
http://ruri.csys.ce.hiroshima-cu.ac.jp/~masato/zemi5.ps.gz
に置いておきます.

ここ最近ずっとRubyのソースコードをみていたのですが,
お世辞抜きで,ソースコードの読みやすさには感動しました.
また,自分の実力のなさを痛感させられる1ヵ月弱でした.
がんばって,Rubyに貢献できるようになりたいです.

では