ruby-changes:15772
From: nobu <ko1@a...>
Date: Sun, 9 May 2010 16:28:44 +0900 (JST)
Subject: [ruby-changes:15772] Ruby:r27701 (trunk, ruby_1_9_2): * cont.c (fiber_initialize_machine_stack_context): try to release
nobu 2010-05-09 16:28:17 +0900 (Sun, 09 May 2010) New Revision: 27701 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27701 Log: * cont.c (fiber_initialize_machine_stack_context): try to release unnecessary fibers and retry to create. based on a patch from masaya tarui at [ruby-dev:41230]. Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/cont.c trunk/ChangeLog trunk/cont.c Index: ChangeLog =================================================================== --- ChangeLog (revision 27700) +++ ChangeLog (revision 27701) @@ -1,3 +1,9 @@ +Sun May 9 16:28:15 2010 Nobuyoshi Nakada <nobu@r...> + + * cont.c (fiber_initialize_machine_stack_context): try to release + unnecessary fibers and retry to create. based on a patch from + masaya tarui at [ruby-dev:41230]. + Sun May 9 08:32:56 2010 NARUSE, Yui <naruse@r...> * ext/json/generator/generator.c (fbuffer_inc_capa): Index: cont.c =================================================================== --- cont.c (revision 27700) +++ cont.c (revision 27701) @@ -548,6 +548,14 @@ #ifdef _WIN32 fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL); + if (!fib->fib_handle) { + /* try to release unnecessary fibers & retry to create */ + rb_gc(); + fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL); + if (!fib->fib_handle) { + rb_raise(rb_eFiberError, "can't create fiber"); + } + } #else /* not WIN32 */ ucontext_t *context = &fib->context; VALUE *ptr; Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 27700) +++ ruby_1_9_2/ChangeLog (revision 27701) @@ -1,3 +1,9 @@ +Sun May 9 16:28:15 2010 Nobuyoshi Nakada <nobu@r...> + + * cont.c (fiber_initialize_machine_stack_context): try to release + unnecessary fibers and retry to create. based on a patch from + masaya tarui at [ruby-dev:41230]. + Sun May 9 08:32:56 2010 NARUSE, Yui <naruse@r...> * ext/json/generator/generator.c (fbuffer_inc_capa): Index: ruby_1_9_2/cont.c =================================================================== --- ruby_1_9_2/cont.c (revision 27700) +++ ruby_1_9_2/cont.c (revision 27701) @@ -548,6 +548,14 @@ #ifdef _WIN32 fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL); + if (!fib->fib_handle) { + /* try to release unnecessary fibers & retry to create */ + rb_gc(); + fib->fib_handle = CreateFiberEx(size - 1, size, 0, fiber_entry, NULL); + if (!fib->fib_handle) { + rb_raise(rb_eFiberError, "can't create fiber"); + } + } #else /* not WIN32 */ ucontext_t *context = &fib->context; VALUE *ptr; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/