えぐち@エスアンドイー です。

[ruby-list:10173] の続編のような性能向上パッチです。

内容ですが、[ruby-list:10173] では、再帰の抑制を
	『単一の文からなるブロック』
に限っていましたが、今度のパッチは
	『ブロックの最後の文』
を再帰の抑制の対象にします。
#当然従来のケースもカバーされます。

このパッチは、時間とスタックの再帰コストを節約します。

	えぐち

Index: eval.c =================================================================== RCS file: /usr/home/eguchi/cvs.netlab.co.jp//ruby/eval.c,v retrieving revision 1.1.1.3.2.29 diff -d -c -r1.1.1.3.2.29 eval.c *** eval.c 1999/07/22 10:58:07 1.1.1.3.2.29 --- eval.c 1999/07/27 09:38:08 *************** *** 1730,1744 **** switch (nd_type(node)) { case NODE_BLOCK: ! if (!node->nd_next) { ! node = node->nd_head; ! goto again; ! } ! while (node) { ! result = rb_eval(self, node->nd_head); node = node->nd_next; } ! break; case NODE_POSTEXE: rb_f_END(); nd_set_type(node, NODE_NIL); /* exec just once */ --- 1730,1742 ---- switch (nd_type(node)) { case NODE_BLOCK: ! while (node->nd_next) { ! rb_eval(self, node->nd_head); node = node->nd_next; } ! node = node->nd_head; ! goto again; ! case NODE_POSTEXE: rb_f_END(); nd_set_type(node, NODE_NIL); /* exec just once */