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

ruby-changes:23307

From: nobu <ko1@a...>
Date: Tue, 17 Apr 2012 13:55:23 +0900 (JST)
Subject: [ruby-changes:23307] nobu:r35358 (trunk): * reduce UNREACHABLE.

nobu	2012-04-17 13:55:10 +0900 (Tue, 17 Apr 2012)

  New Revision: 35358

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

  Log:
    * reduce UNREACHABLE.

  Modified files:
    trunk/cont.c

Index: cont.c
===================================================================
--- cont.c	(revision 35357)
+++ cont.c	(revision 35358)
@@ -1093,25 +1093,22 @@
 {
     rb_fiber_t *fib;
     VALUE curr = rb_fiber_current();
+    VALUE prev;
     GetFiberPtr(curr, fib);
 
-    if (fib->prev == Qnil) {
-	rb_thread_t *th = GET_THREAD();
+    prev = fib->prev;
+    if (NIL_P(prev)) {
+	const VALUE root_fiber = GET_THREAD()->root_fiber;
 
-	if (th->root_fiber != curr) {
-	    return th->root_fiber;
-	}
-	else {
+	if (root_fiber == curr) {
 	    rb_raise(rb_eFiberError, "can't yield from root fiber");
 	}
+	return root_fiber;
     }
     else {
-	VALUE prev = fib->prev;
 	fib->prev = Qnil;
 	return prev;
     }
-
-    UNREACHABLE;
 }
 
 VALUE rb_fiber_transfer(VALUE fib, int argc, VALUE *argv);

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

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