なかだです。

At Wed, 25 Jun 2003 19:17:01 +0900,
Minero Aoki wrote:
> > |それだと定数に別のものを再代入されたらクラスオブジェクトが
> > |宙に浮きませんか? たとえば
> > |
> > |  NilClass = nil
> > |
> > |とされた場合、rb_cNilClass がどこかから確実に参照されている
> > |ことが保証できなくなるのではないでしょうか。
> > 
> >   rb_cObject
> >   rb_cFixnum
> >   rb_cNilClass
> >   rb_cFalseClass
> >   rb_cTrueClass
> > 
> > だけ明示的にマークすればよいのかな。
> 
> 恐らく、Ruby レベルからクラスオブジェクトにアクセスせずに
> インスタンスを作れるクラスは全て危険ですよね。とすると
> 少なくとも rb_cString rb_cArray rb_cHash rb_cBignum rb_cRange
> あたりは必要だと思います。

あとrb_cRegexpとrb_cSymbolあたりも。

> つまり、明示的なマークをさぼっているものが他にもたくさん
> あるのではないかと想像します。そのうちのほとんどは GC されても
> 無害だとは思いますが、まんがいちハマったときに悲しいことに
> なるでしょう。どうせ 1 プロセスで定義されるクラスの数はそう
> 多くはないでしょうから、まとめて配列にでも入れて保護すれば
> よいのではないでしょうか。

Rubyレベルで定義されたものだけ保護すればいいような気もしますが

evalとかrb_path2class()という手もあったりするので、確実とはい
ないで
すよねぇ。

となると、一本化するメリットってなんだろう。定数の検索がやや単
純化されるってことだけかな。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦