[#10793] 今度こそ (patch of the ruby-1.4.6 for NT4.0&VC4.0 on DEC Alpha.) — kou@...1609.sip.eee.yamaguchi-u.ac.jp (Koichi Okada)

岡田です。

10 messages 2000/09/01

[#10920] SIGINT on windows — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

17 messages 2000/09/14
[#11077] Re: SIGINT on windows — matz@... (Yukihiro Matsumoto) 2000/09/27

まつもと ゆきひろです

[#10944] dummy DLL on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

19 messages 2000/09/18
[#10955] Re: dummy DLL on Windows — WATANABE Hirofumi <eban@...> 2000/09/19

わたなべです.

[#10963] Re: dummy DLL on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/09/19

なかだです。

[#10964] Re: dummy DLL on Windows — WATANABE Hirofumi <eban@...> 2000/09/19

わたなべです.

[#10978] [PATCH] require in require — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

15 messages 2000/09/20

[#10985] httphead.rb proxy version problem — Katsuyuki Komatsu <komatsu@...>

小松です.

16 messages 2000/09/20
[#10989] Re: httphead.rb proxy version problem — Minero Aoki <aamine@...> 2000/09/20

あおきです。

[ruby-dev:10922] Re: proper tail recursion

From: Shugo Maeda <shugo@...>
Date: 2000-09-15 02:07:11 UTC
List: ruby-dev #10922
前田です。

At Fri, 15 Sep 2000 05:26:55 +0900,
Shugo Maeda <shugo@ruby-lang.org> wrote:
> tail recursiveにする方法を思いついたので、試しに実装してみました。

スレッドからreturnした場合に問題があったのと、行番号がずれていた
のを直しました。

-- 
前田 修吾

--- eval.c.orig	Fri Sep 15 10:55:55 2000
+++ eval.c	Fri Sep 15 10:56:03 2000
@@ -2384,6 +2384,7 @@
 	  tail_call_mid = node->nd_mid;
 	  tail_call_args = rb_ary_new4(argc, argv);
 	  TMP_PROTECT_END;
+	  return_check();
 	  JUMP_TAG(TAG_TAILCALL);
         }
 	break;
@@ -2391,6 +2392,7 @@
       case NODE_RETURN_VCALL:
 	tail_call_mid = node->nd_mid;
 	tail_call_args = Qnil;
+	return_check();
 	JUMP_TAG(TAG_TAILCALL);
 	break;
 
--- parse.y.orig	Fri Sep 15 11:00:07 2000
+++ parse.y	Fri Sep 15 10:58:48 2000
@@ -4481,12 +4481,14 @@
     case NODE_FCALL:
 	if (node->nd_mid == cur_mid) {
 	    nd_set_type(node, NODE_RETURN_FCALL);
+	    nd_set_line(node, ruby_sourceline);
 	    return node;
 	}
 	break;
     case NODE_VCALL:
 	if (node->nd_mid == cur_mid) {
 	    nd_set_type(node, NODE_RETURN_VCALL);
+	    nd_set_line(node, ruby_sourceline);
 	    return node;
 	}
 	break;

In This Thread