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

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/

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