From: Hajimu UMEMOTO Date: 2006-01-21T14:19:17+09:00 Subject: [ruby-dev:28252] Re: FUNCTION_CALL_MAY_RETURN_TWICE 梅本です。 >>>>> On Sat, 21 Jan 2006 12:03:04 +0900 >>>>> Tanaka Akira said: akr> FUNCTION_CALL_MAY_RETURN_TWICE は register window や akr> register stack をもつ SPARC と IA64 のためのコードであり、し akr> かもかなり怪しいコードです。(0 ? setjmp() : 0) という実行時 akr> にはなにもしないはずのコードですから、その有無で影響があると akr> いうのはかなり奇妙なことが起こっていることになります。 いや、以前のコードだと sparc 以外だと ia64 も含めて static jmp_buf function_call_may_return_twice_jmp_buf; int function_call_may_return_twice_false = 0; #define FUNCTION_CALL_MAY_RETURN_TWICE \ (function_call_may_return_twice_false ? \ setjmp(function_call_may_return_twice_jmp_buf) : \ 0) となっていたと思います。 akr> あと、1.9 は動きますか? 今日の時点の ftp://ftp.ruby-lang.org/pub/ruby/snapshot.tar.gz を取っ てきて試してみました。-march=athlon-xp だと、1.8 の時と場所は違いますが、 Win32API のところで止まります。athron64 は手元にないので試していません。 gcc -O2 -pipe -march=athlon-xp -fPIC -DRUBY_EXPORT -I. -I. -c variable.c gcc -O2 -pipe -march=athlon-xp -fPIC -DRUBY_EXPORT -I. -I. -c version.c gcc -O2 -pipe -march=athlon-xp -fPIC -DRUBY_EXPORT -I. -I. -c dmyext.c ar rcu libruby-static.a array.o ascii.o bignum.o class.o compar.o dir.o dln.o enum.o enumerator.o error.o euc_jp.o eval.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regcomp.o regenc.o regerror.o regexec.o regparse.o ruby.o signal.o sjis.o sprintf.o st.o string.o struct.o time.o utf8.o util.o variable.o version.o dmyext.o gcc -O2 -pipe -march=athlon-xp -fPIC -DRUBY_EXPORT -I. -I. -c main.c gcc main.o libruby-static.a -lpthread -lcrypt -lm -o miniruby -O2 -pipe -march=athlon-xp -fPIC -DRUBY_EXPORT -rdynamic rbconfig.rb updated compiling Win32API -- 梅本 肇 @ インターネット互助会横浜 http://www.imasy.org/~ume/ ume@mahoroba.org ume@{,jp.}FreeBSD.org プログラムは書いた人の意図ではなく書かれた通り動く I hate Modula-3 :-)