・2.1のGCマークビットをビットマップへ移動したので、予約ビットと合わせて2ビット空いた。そのうち1つを世代別GC用に利用する。マーク時に世代ビットも立てる。新世代用GC時に、上記ビットが立っているオブジェクトを発見したら、そのオブジェクトから先はマークしない。マークフェーズが速くなった。dした場合に、cが実際には不要化されたのに残る。(追記:下で書いているSHADYと不可分な話だった。SHADYかつリメンバオブジェクトであれば旧世代(PROMOTED)とはしないといった制御をしている)もう1つのビットを日陰者と日陽者とする。陽なオブジェクトとするかどうかは、Cのコードでライトバリアを陽に設定するかどうかで決まる。既存の拡張ライブラリのものはすべて日陰者となる。(このへん、ちゃんと理解してないので、なぜそうなったかわからないのだが、世代別と合わせることで、不要オブジェクトの早期回収が可能となるからフルGCの頻度が減るという理解で良いのかな?)Rubyコアの利用箇所でライトバリアを設定するように改造し、RDocで試したら220秒かかっていた処理が、190秒で終わるようになった。‘13というわけで、インフォメーション買った。聞かれたので、客層とまったくマッチしないから無理でしょうと最初答えた。考えてみれば、著者としては不誠実かも知れないと思いなおした。したら奇特な人もいるかも知れないから、2冊くらいは置いてくれたらうれしいと頼んでみた。後、Kaigi関連本として、まつもとさんがRubyでは採用しなかったBoehmGCを採用している処理系として名前を挙げられたGaucheの本もポップにそう書いて少し置いてみたらどうかとか。史朗)その伝でいくと、同じく言及があったトランザクションメモリを実装しているClojureについては丁度第2版が出たところなので置いてあったけど、ポップに書けば良いのにと今になって思い出した。barrier等で検出してマークしなおすのが普通だと思います。GCじゃないのでoldとnewが混在していてそれができない。したがって書き込みコードで明示的にチェックをしないといけない。それは開発コストがかかるので、最初から全部対応しなくていい工夫をしました。いうのが今回の話です。