babie steps

作業療法記録

オーバーライド禁止 (3)

金曜日の夜は コメントの通り RHG とソースを読んだんですがよくわかりませんでした。メソッド追加は eval.c の add_method() で確定として、この add_method() は mid(メソッドID)を受け取るので、その前の段階で mid を取得してるはずです。その前段階はクラス再定義だと思うんですが、その場所がわかりませんでした。
クラス再定義の場合も class.c の rb_class_boot() を使用していて、 C レベルでは super にオリジナルのクラスを入れといて Ruby レベルでは見せないようにしてるのかなぁ?