まつもと ゆきひろです

In message "[ruby-dev:14845] Re: custom marshal"
    on 01/10/02, Yukihiro Matsumoto <matz / ruby-lang.org> writes:

|違う方法でやろうと思ってます(basicNewに近い方法)。
|もうちょっと様子を見ててください。

結局、以下の方法でいこうと思います。

  * TYPE(v) == T_OBJECT を追加

    TYPE_UCLASSはT_OBJECT以外に適用されるはずですから、この
    チェックを追加することで、ほとんどのケースは除去できます。

  * allocation frameworkの追加

    オブジェクトの割り当てを各クラスのallocateメソッドによっ
    て行うようにRuby全体を変更し、TYPE_UCLASSに対して、もう
    ひとつ別のオブジェクトをallocateし、そのオブジェクトと
    r_object()の結果のTYPEが一致するかを確認する、という方法
    でより厳密なチェックを行います。

これで、(becomeの能力は下がりますが)落ちることはなくなると思
います。
                                まつもと ゆきひろ /:|)