[#23332] to_str再考 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2004/04/05

[#23380] [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2004/04/15
[#23400] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。落ちる場所がわかりました。

[#23402] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23403] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — nobu.nakada@... 2004/04/16

なかだです。

[#23405] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[#23407] Re: [SEGV] make test-all (bccwin32 ruby1.9.0) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/04/16

山本です。

[ruby-dev:23312] Re: 100000000000000000000000 == 100000000000000000000000.0

From: matz@... (Yukihiro Matsumoto)
Date: 2004-04-02 06:10:08 UTC
List: ruby-dev #23312
まつもと ゆきひろです

In message "[ruby-dev:23311] Re: 100000000000000000000000 == 100000000000000000000000.0"
    on 04/04/02, Tanaka Akira <akr@m17n.org> writes:

|たぶん、rb_big_eq の
|
|      case T_FLOAT:
|        if (rb_big2dbl(x) == RFLOAT(y)->value)
|            return Qtrue;
|
|というところで、rb_big2dbl の返値がレジスタに載ったまま使われていて、
|レジスタの 80bit な値と、y から参照されるメモリの 64bit な値を比較する
|ときに 80bit に拡張されて比較されるため、16bit ぶんの半端な部分になん
|かの値が入っていて等しくないとされているのではないかと思うんですが。ちゃ
|んと確認したわけではないんですが、いちおう、bignum.o をコンパイルする
|時に -ffloat-store をつけると、こちらでも true に変わります。
|
|でも、そちらで再現しないのなら、私の環境に特有の問題かも知れません。
|他に再現する人はいませんか?

gccのバージョンとかによるのかもしれません。

% gcc -v
Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.3/specs
Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib,gtk --enable-objc-gc i486-linux
Thread model: posix
gcc version 3.3.3 (Debian 20040321)

これはつまりrb_big2dbl()の戻り値を一度変数に格納してしまえば
問題ないってことですかね。

In This Thread