From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2012-03-19T05:54:02+09:00 Subject: [ruby-dev:45399] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて けいじゅ@いしつかです. In [ruby-dev:45381] the message: "[ruby-dev:45381] Re: Marshal.dumpに おけるインスタンス変数の取り扱いについて", on Mar/18 00:26(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >まあ、以前はComplexとか通常のオブジェクトでしたからね。 >Numericの下だからという理由でインスタンス変数を全部削られた >らそれはそれで困るでしょうが。 たしかに. >ただ、T_OBJECTでないFloatやBignumはやっぱり無視してもいいような気がし >ます。 そうですねぇ. それらの, (Cレベル)サブクラスではインスタンス変数は定義 するな, もしくはそれなりのmashalメソッド定義しろって規定するのはありか も. >|rb_marshal_define_compat() で >なんでなんでしょうねえ。akrさんのr13413からそうみたいなんで、 >彼に聞いてみないと。 (次に続きます) In [ruby-dev:45382] the message: "[ruby-dev:45382] Re: Marshal.dumpに おけるインスタンス変数の取り扱いについて", on Mar/18 02:15(JST) Tanaka Akira writes: >r13413 では rb_gc_register_address が間に入っていたので、 >そこで GC が起きることへの対策ですね。 >rb_gc_register_address 内では ALLOC するので GC が起きる可能性があり、 >GC が起きたときに compat->newclass や compat->oldclass にゴミが入っていると >よろしくなかったんじゃないでしょうか。 なるほど, その状態なら理解できます. ということは, すくなくとも, 今は必要ないという事で良いんですよね? さらに細かくなるのですが... marshal_compat_t に関わる全ての処理ですが, 昔の互換性のためにあるのしょ うか? 使っているのは, Rangeだけですし この仕組みを使わなくても代替でき, かつ, 今の仕組みを使うほうがエレガントな気がしますが? __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---