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/