From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2012-03-19T17:49:05+09:00 Subject: [ruby-dev:45405] Re: Marshal.dumpにおけるインスタンス変数の取り扱いについて けいじゅ@いしつかです. In [ruby-dev:45401] the message: "[ruby-dev:45401] Re: Marshal.dumpに おけるインスタンス変数の取り扱いについて", on Mar/19 09:44(JST) Tanaka Akira writes: >> ということは, すくなくとも, 今は必要ないという事で良いんですよね? >そう思います。 了解です. >> marshal_compat_t に関わる全ての処理ですが, 昔の互換性のためにあるのしょ >> うか? 使っているのは, Rangeだけですし この仕組みを使わなくても代替でき, >> かつ, 今の仕組みを使うほうがエレガントな気がしますが? >今の仕組みというのが何を指しているのかちょっとわからないのですが、 >Range を T_OBJECT に戻せば問題ないと思います。 言葉足らずですいません. Range#marshal_dump/load とか Range#_dump_data/_dump_loadを定義すれば良 いのでは? という意味でした. さらに, もうひとつ質問: w_objectで : else if (FIXNUM_P(obj)) { #if SIZEOF_LONG <= 4 w_byte(TYPE_FIXNUM, arg); w_long(FIX2INT(obj), arg); #else if (RSHIFT((long)obj, 31) == 0 || RSHIFT((long)obj, 31) == -1) { w_byte(TYPE_FIXNUM, arg); w_long(FIX2LONG(obj), arg); } else { w_object(rb_int2big(FIX2LONG(obj)), arg, limit); } #endif } : とあるのですが, サイズで処理を分けなくて(前半部分だけ)も動作する気がす るのですが(w_longの#ifdef内も削除)? __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---