[#615] [MethodIndex] <!-- hhmts ... — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

13 messages 1997/10/01

[#645] pack/unpack base64 — WATANABE Hirofumi <watanabe@...>

わたなべです.

18 messages 1997/10/06

[#654] [BUG?] ruby -r nothing-file — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

29 messages 1997/10/06
[#661] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#662] Re: [BUG?] ruby -r nothing-file — WATANABE Hirofumi <watanabe@...> 1997/10/07

わたなべです.

[#663] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#666] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#667] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#669] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#670] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#671] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#672] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#673] Re: [BUG?] ruby -r nothing-file — WATANABE Hirofumi <watanabe@...> 1997/10/07

わたなべです.

[#674] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#675] Re: [BUG?] ruby -r nothing-file — WATANABE Hirofumi <watanabe@...> 1997/10/07

わたなべです.

[#676] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#677] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#678] Re: [BUG?] ruby -r nothing-file — keiju@... (石塚圭樹 ) 1997/10/07

けいじゅ@日本ラショナルソフトウェアです.

[#679] Re: [BUG?] ruby -r nothing-file — matz@... (Yukihiro Matsumoto) 1997/10/07

まつもと ゆきひろです

[#770] printn means print and newline — HYOUDOU Kouichi /note <hyoudo@...>

兵藤です%思い付きなのですが

19 messages 1997/10/28
[#771] Re: printn means print and newline — shugo@... (Shugo Maeda) 1997/10/28

前田です。

[ruby-dev:720] Re: 64bit int support (Re: _muldi3 included in libgcc.a)

From: "EGUCHI Osamu" <eguchi@...>
Date: 1997-10-10 04:41:34 UTC
List: ruby-dev #720
えぐち です。



----------
> 差出人 : EGUCHI Osamu <eguchi@shizuokanet.or.jp>
> 宛先 : ruby developers list <ruby-dev@netlab.co.jp>
> 件名 : [ruby-dev:719] 64bit int support (Re: _muldi3 included in
libgcc.a)
> 送信日時 : 1997年10月10日 12:00
> 
> えぐち です。
> 
> ----------
> > 差出人 : Yukihiro Matsumoto <matz@netlab.co.jp>
> > 件名 : [ruby-dev:718] Re: _muldi3 included in libgcc.a(Re: rbc.rb)
> > 送信日時 : 1997年10月10日 9:09
> > 
> > まつもと ゆきひろです
> > 

> > |まず、
> > |	ruby -e 'p 0.size'
> > |
> > |で 4 を返すのが仕様なのか、実装依存かを決めておく必要がありそうです。
> > |marshal なデータファイルの互換性からすると
> > |
> > |	0.size == 4
> > |
> > |を仕様にした方がいいように思えます。
> > 
> > 私はInteger#sizeは実装依存で構わないと思っています.
> > marshalは(まだ不十分ですが)intのサイズに依存しないように設計
> > しています
> 
> marshal.c の long_toobig() であきらめちゃってるところを
>  longlong_tobig() にする必要ありって事ですね(笑)
> 

これ少し違いました。書き出し時点で対応することにしているんですね。

で、その marshal.c:w_object() ですが、

--- ../../../ruby-1.1a9/ext/marshal/marshal.c	Thu Oct  2 18:08:18 1997
+++ marshal.c	Fri Oct 10 13:21:13 1997
@@ -225,9 +225,25 @@ w_object(obj, arg, limit)
 	w_byte(TYPE_FALSE, arg);
     }
     else if (FIXNUM_P(obj)) {
-	if (sizeof(long) == 4) {
+	if (sizeof(VALUE) == 4) {
 	    w_byte(TYPE_FIXNUM, arg);
 	    w_long(FIX2INT(obj), arg);
+	}
+	else {
+	    obj = int2big(FIX2INT(obj));
+	    w_byte(TYPE_BIGNUM, arg);
+	    {
+		char sign = RBIGNUM(obj)->sign?'+':'-';
+		int len = RBIGNUM(obj)->len;
+		USHORT *d = RBIGNUM(obj)->digits;
+
+		w_byte(sign, arg);
+		w_long(len, arg);
+		while (len--) {
+		    w_short(*d, arg);
+		    d++;
+		}
+	    }
 	}
     }
     else {
----

としないと、ruby64 では Fixnum を書き出さないと言う問題があるようです。
もちろん、まだ発生しない ruby64 が出来たときに露見する未来のバグです。

#
また、ruby32 の Fixnum に収まる場合は TYPE_FIXNUM で書き出すべき?

#TYPE_INTEGER として Fixnum と Bignum を区別しない方が
#互換性問題から開放されたかもしれないですが、しかたないですね。

	えぐち

In This Thread

Prev Next