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

ruby-changes:15154

From: mame <ko1@a...>
Date: Wed, 24 Mar 2010 23:47:24 +0900 (JST)
Subject: [ruby-changes:15154] Ruby:r27033 (trunk): * thread.c (thread_create_core): let new thread inherit RUBY_EVENT_VM

mame	2010-03-24 23:47:00 +0900 (Wed, 24 Mar 2010)

  New Revision: 27033

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

  Log:
    * thread.c (thread_create_core): let new thread inherit RUBY_EVENT_VM
      of event_flags.  [ruby-core:25191]
    
    * thread.c (rb_threadptr_exec_event_hooks): delete RUBY_EVENT_VM if
      all event_hooks are removed.

  Modified files:
    trunk/ChangeLog
    trunk/thread.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 27032)
+++ ChangeLog	(revision 27033)
@@ -1,3 +1,11 @@
+Wed Mar 24 23:43:40 2010  Yusuke Endoh  <mame@t...>
+
+	* thread.c (thread_create_core): let new thread inherit RUBY_EVENT_VM
+	  of event_flags.  [ruby-core:25191]
+
+	* thread.c (rb_threadptr_exec_event_hooks): delete RUBY_EVENT_VM if
+	  all event_hooks are removed.
+
 Wed Mar 24 22:58:02 2010  Yusuke Endoh  <mame@t...>
 
 	* configure.in: revert the previous commit, which seemed to break make
Index: thread.c
===================================================================
--- thread.c	(revision 27032)
+++ thread.c	(revision 27033)
@@ -549,6 +549,9 @@
     th->thgroup = GET_THREAD()->thgroup;
 
     native_mutex_initialize(&th->interrupt_lock);
+    if (GET_VM()->event_hooks != NULL)
+	th->event_flags |= RUBY_EVENT_VM;
+
     /* kick thread */
     st_insert(th->vm->living_threads, thval, (st_data_t) th->thread_id);
     err = native_thread_create(th);
@@ -3769,7 +3772,12 @@
 	exec_event_hooks(th->event_hooks, flag, self, id, klass);
     }
     if (wait_event & RUBY_EVENT_VM) {
-	exec_event_hooks(th->vm->event_hooks, flag, self, id, klass);
+	if (th->vm->event_hooks == NULL) {
+	    th->event_flags &= (~RUBY_EVENT_VM);
+	}
+	else {
+	    exec_event_hooks(th->vm->event_hooks, flag, self, id, klass);
+	}
     }
     th->errinfo = errinfo;
 }

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

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