なひです。

marshal_dumpと_dumpのいずれかが定義されていた場合、
ivtblの中身がdumpされないことになりましたが(そのほうが嬉しいと
なひも賛成しました)、組み込みクラスの中でおそらく唯一、
デフォルトで_dumpを持っているTimeはどう扱うべきでしょうか。

t = Time.new; t.instance_eval("@a = 1"); t2 = Marshal.load(
  Marshal.dump(t)); p t2.instance_variables

# => []? ["@a"]?

過去どうだったか、正確に覚えてはいないのですが、1.6、現行の1.8は
dumpされないものの、半年くらい前の1.8はdumpされたと思います
(なひが以前書いたテストケースが正しければ)。

「組み込み型については、marshal_dumpや_dumpをユーザが定義しない限り、
ivtblはdumpされる」というルールのほうがわかりやすいような気がしますが、
どうでしょうか。time_dumpはmarshal.cへ? あるいは組み込み型用API新設?
あるいはTimeは特別?