[#28217] ANDCALL operator (Re: [ruby-list:41768] Re: nilの扱い) — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
6 messages
2006/01/13
[#28223] FYI: Fix bug: FileUtils.mv() does not unlink source file when moving over filesystem boundaries — 植田裕之 <ueda@...>
植田と申します。
7 messages
2006/01/17
[#28227] Re: FYI: Fix bug: FileUtils.mv() does not unlink source file when moving over filesystem boundaries
— akira yamada / やまだあきら <akira@...>
2006/01/17
植田裕之 wrote:
[#28230] bcc32 memory manager — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
15 messages
2006/01/18
[#28231] Re: bcc32 memory manager
— "U.Nakamura" <usa@...>
2006/01/18
こんにちは、なかむら(う)です。
[#28232] Re: bcc32 memory manager
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/18
山本です。
[#28358] Re: bcc32 memory manager
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/02/21
山本です。
[#28376] Re: bcc32 memory manager
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/02/23
山本です。
[#28233] 1.8.5 release plan? — "URABE Shyouhei aka. mput" <root@...>
卜部です。
9 messages
2006/01/18
[#28240] String クラス insert メソッド — 北浦 友規 <uv2t-ktur@...>
String クラスの insert メソッドは、
6 messages
2006/01/19
[#28243] FUNCTION_CALL_MAY_RETURN_TWICE — Hajimu UMEMOTO <ume@...>
梅本です。
18 messages
2006/01/20
[#28247] Re: FUNCTION_CALL_MAY_RETURN_TWICE
— Tanaka Akira <akr@...17n.org>
2006/01/20
In article <ygezmlrqybi.wl%ume@mahoroba.org>,
[#28253] Re: FUNCTION_CALL_MAY_RETURN_TWICE
— Tanaka Akira <akr@...17n.org>
2006/01/21
In article <ygeoe26gnuj.wl%ume@mahoroba.org>,
[#28254] Re: FUNCTION_CALL_MAY_RETURN_TWICE
— Hajimu UMEMOTO <ume@...>
2006/01/21
梅本です。
[#28255] Re: FUNCTION_CALL_MAY_RETURN_TWICE
— Tanaka Akira <akr@...17n.org>
2006/01/21
In article <ygelkxagkse.wl%ume@mahoroba.org>,
[#28261] Re: FUNCTION_CALL_MAY_RETURN_TWICE
— Hajimu UMEMOTO <ume@...>
2006/01/21
梅本です。
[#28270] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
17 messages
2006/01/23
[#28271] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/23
山本です。
[#28272] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— WATANABE Hirofumi <eban@...>
2006/01/23
わたなべです。
[#28273] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/23
山本です。
[#28274] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/24
山本です。
[#28275] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "U.Nakamura" <usa@...>
2006/01/24
こんにちは、なかむら(う)です。
[#28276] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/24
山本です。
[#28277] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/24
山本です。
[#28278] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/24
山本です。
[#28279] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/24
山本です。
[#28281] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/25
[#28282] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— Yukihiro Matsumoto <matz@...>
2006/01/25
まつもと ゆきひろです
[#28283] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/01/26
山本です。
[#28286] SEGV with zlib — Tanaka Akira <akr@...17n.org>
最近、Data オブジェクトの free 関数が気になっているのですが、
24 messages
2006/01/30
[#28303] Re: SEGV with zlib
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/02/06
山本です。
[#28304] Re: SEGV with zlib
— Yukihiro Matsumoto <matz@...>
2006/02/06
まつもと ゆきひろです
[#28305] Re: SEGV with zlib
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/02/06
山本です。
[#28306] Re: SEGV with zlib
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/02/06
山本です。
[#28307] Re: SEGV with zlib
— Tietew <tietew-ml-ruby-dev@...>
2006/02/06
[#28308] Re: SEGV with zlib
— Yukihiro Matsumoto <matz@...>
2006/02/06
まつもとゆきひろです。
[#28309] Re: SEGV with zlib
— Yukihiro Matsumoto <matz@...>
2006/02/07
まつもと ゆきひろです
[#28310] Re: SEGV with zlib
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2006/02/07
山本です。
[#28312] Re: SEGV with zlib
— Yukihiro Matsumoto <matz@...>
2006/02/07
まつもと ゆきひろです
[#28316] Re: SEGV with zlib
— Tanaka Akira <akr@...17n.org>
2006/02/07
In article <34e00f690602060546l1ef5b22em52589f23240a8e43@mail.gmail.com>,
[#28317] Re: SEGV with zlib
— Yukihiro Matsumoto <matz@...>
2006/02/08
まつもと ゆきひろです
[#28318] Re: SEGV with zlib
— Tanaka Akira <akr@...17n.org>
2006/02/08
In article <1139361872.676364.14519.nullmailer@x31.priv.netlab.jp>,
[ruby-dev:28205] Re: Intel C++ Compiler and HP aC++/ANSI C on IA64
From:
Tanaka Akira <akr@...17n.org>
Date:
2006-01-04 16:14:14 UTC
List:
ruby-dev #28205
In article <87fyofvyns.fsf@m17n.org>,
Tanaka Akira <akr@m17n.org> writes:
> 問題は、setjmp/getcontext から (longjmp/setcontext 経由で)
> return した時に r32 以降 (register stack に保存されるレジス
> タ) が setjmp/getcontext の呼出し時とは違う値になっている可
> 能性があるにもかかわらずコンパイラがその可能性を想定しないコー
> ドを生成している、というところにあります。
これは HP aC++/ANSI C についてはあてはまらない気がしてきまし
た。
# Intel C++ Compiler については依然としてあてはまると考えて
# います。
違う値になっている原因をさらに追った結果、getcontext 以降に
書き換えられた影響ではなく、register stack を save するのと
getcontext の間に書き換えられた register が save した値に戻っ
てしまっているのが問題でした。
で、次のように rb_thread_save_context(th) をなるべく
getcontext に近づけたら -O2 でも core を吐かなくなりました。
# 完璧を期すために rb_thread_save_context(th) を呼んでから
# getcontext を tail call する関数を (アセンブリ言語で) 書く
# ことも考えなくはなかったのですが、まぁ、それはまた必要になっ
# てからということで。
あと、getcontext じゃなくて setjmp なら
rb_thread_save_context(th) との間にコードが入らないので近づ
けるまでもなく core を吐かないんじゃないかと思って試してみた
らやっぱり吐きませんでした。しかも、なんか getcontext よりか
なり速いです。(というか、HP-UX で getcontext を使った場合が
やけに遅い) bsp の取得も getcontext には依存していないことも
あり、もはや ia64 で特に setjmp を避ける意味はなかろうという
わけで、ia64 では常に getcontext を使うという特別扱いを除去
してあります。
Index: configure.in
===================================================================
RCS file: /src/ruby/configure.in,v
retrieving revision 1.294
diff -u -p -r1.294 configure.in
--- configure.in 27 Dec 2005 11:52:54 -0000 1.294
+++ configure.in 4 Jan 2006 15:50:30 -0000
@@ -781,7 +781,7 @@ if test x"$enable_pthread" = xyes; then
fi
fi
if test x"$ac_cv_header_ucontext_h" = xyes; then
- if test x"$target_cpu" = xia64 -o x"$rb_with_pthread" = xyes; then
+ if test x"$rb_with_pthread" = xyes; then
AC_CHECK_FUNCS(getcontext setcontext)
fi
fi
Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.863
diff -u -p -r1.863 eval.c
--- eval.c 31 Dec 2005 13:57:20 -0000 1.863
+++ eval.c 4 Jan 2006 15:50:31 -0000
@@ -158,17 +158,18 @@ int function_call_may_return_twice_false
#define FUNCTION_CALL_MAY_RETURN_TWICE 0
#endif
#define ruby_longjmp(env, val) rb_jump_context(env, val)
-#define ruby_setjmp(j) ((j)->status = 0, \
+#define ruby_setjmp(just_before_setjmp, j) ((j)->status = 0, \
+ (just_before_setjmp), \
FUNCTION_CALL_MAY_RETURN_TWICE, \
getcontext(&(j)->context), \
(j)->status)
#else
typedef jmp_buf rb_jmpbuf_t;
#if !defined(setjmp) && defined(HAVE__SETJMP)
-#define ruby_setjmp(env) _setjmp(env)
+#define ruby_setjmp(just_before_setjmp, env) ((just_before_setjmp), _setjmp(env))
#define ruby_longjmp(env,val) _longjmp(env,val)
#else
-#define ruby_setjmp(env) setjmp(env)
+#define ruby_setjmp(just_before_setjmp, env) ((just_before_setjmp), setjmp(env))
#define ruby_longjmp(env,val) longjmp(env,val)
#endif
#endif
@@ -918,7 +919,7 @@ static struct tag *prot_tag;
#define PROT_YIELD INT2FIX(3) /* 7 */
#define PROT_TOP INT2FIX(4) /* 9 */
-#define EXEC_TAG() (FLUSH_REGISTER_WINDOWS, ruby_setjmp(prot_tag->buf))
+#define EXEC_TAG() (FLUSH_REGISTER_WINDOWS, ruby_setjmp(0, prot_tag->buf))
#define JUMP_TAG(st) do { \
ruby_frame = prot_tag->frame; \
@@ -10123,6 +10124,7 @@ rb_thread_save_context(rb_thread_t th)
th->bstr_max = len;
}
th->bstr_len = len;
+ rb_ia64_flushrs();
MEMCPY(th->bstr_ptr, th->bstr_pos, VALUE, th->bstr_len);
#endif
#ifdef SAVE_WIN32_EXCEPTION_LIST
@@ -10196,8 +10198,7 @@ rb_thread_switch(int n)
}
#define THREAD_SAVE_CONTEXT(th) \
- (rb_thread_save_context(th),\
- rb_thread_switch((FLUSH_REGISTER_WINDOWS, ruby_setjmp((th)->context))))
+ (rb_thread_switch((FLUSH_REGISTER_WINDOWS, ruby_setjmp(rb_thread_save_context(th), (th)->context))))
NORETURN(static void rb_thread_restore_context(rb_thread_t,int));
NORETURN(NOINLINE(static void rb_thread_restore_context_0(rb_thread_t,int,void*)));
--
[田中 哲][たなか あきら][Tanaka Akira]