[前][次][番号順一覧][スレッド一覧]

ruby-changes:15181

From: knu <ko1@a...>
Date: Fri, 26 Mar 2010 13:10:55 +0900 (JST)
Subject: [ruby-changes:15181] Ruby:r27061 (ruby_1_8): * eval.c (rb_eval): Use for() and make it a bit easier to read and

knu	2010-03-26 13:10:38 +0900 (Fri, 26 Mar 2010)

  New Revision: 27061

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27061

  Log:
    * eval.c (rb_eval): Use for() and make it a bit easier to read and
      debug here.

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/eval.c

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 27060)
+++ ruby_1_8/ChangeLog	(revision 27061)
@@ -1,3 +1,8 @@
+Fri Mar 26 13:09:12 2010  Akinori MUSHA  <knu@i...>
+
+	* eval.c (rb_eval): Use for() and make it a bit easier to read and
+	  debug here.
+
 Fri Mar 26 12:44:08 2010  Akinori MUSHA  <knu@i...>
 
 	* enum.c (Enumerable#each_entry): New method.
Index: ruby_1_8/eval.c
===================================================================
--- ruby_1_8/eval.c	(revision 27060)
+++ ruby_1_8/eval.c	(revision 27061)
@@ -3133,12 +3133,11 @@
 	goto again;
 
       case NODE_WHEN:
-	while (node) {
+	for (; node; node = node->nd_next) {
 	    NODE *tag;
 
 	    if (nd_type(node) != NODE_WHEN) goto again;
-	    tag = node->nd_head;
-	    while (tag) {
+	    for (tag = node->nd_head; tag; tag = tag->nd_next) {
 		EXEC_EVENT_HOOK(RUBY_EVENT_LINE, tag, self,
 				ruby_frame->last_func,
 				ruby_frame->last_class);
@@ -3153,33 +3152,25 @@
 			    goto again;
 			}
 		    }
-		    tag = tag->nd_next;
 		    continue;
 		}
 		if (RTEST(rb_eval(self, tag->nd_head))) {
 		    node = node->nd_body;
 		    goto again;
 		}
-		tag = tag->nd_next;
 	    }
-	    node = node->nd_next;
 	}
 	RETURN(Qnil);
 
       case NODE_CASE:
 	{
-	    VALUE val;
+	    VALUE val = rb_eval(self, node->nd_head);
 
-	    val = rb_eval(self, node->nd_head);
-	    node = node->nd_body;
-	    while (node) {
+	    for (node = node->nd_body; node; node = node->nd_next) {
 		NODE *tag;
 
-		if (nd_type(node) != NODE_WHEN) {
-		    goto again;
-		}
-		tag = node->nd_head;
-		while (tag) {
+		if (nd_type(node) != NODE_WHEN) goto again;
+		for (tag = node->nd_head; tag; tag = tag->nd_next) {
 		    EXEC_EVENT_HOOK(RUBY_EVENT_LINE, tag, self,
 				    ruby_frame->last_func,
 				    ruby_frame->last_class);
@@ -3194,16 +3185,13 @@
 				goto again;
 			    }
 			}
-			tag = tag->nd_next;
 			continue;
 		    }
 		    if (RTEST(rb_funcall2(rb_eval(self, tag->nd_head), eqq, 1, &val))) {
 			node = node->nd_body;
 			goto again;
 		    }
-		    tag = tag->nd_next;
 		}
-		node = node->nd_next;
 	    }
 	}
 	RETURN(Qnil);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]