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

ruby-changes:18499

From: akr <ko1@a...>
Date: Wed, 12 Jan 2011 19:40:37 +0900 (JST)
Subject: [ruby-changes:18499] Ruby:r30522 (trunk): * vm.c (thread_free): reset ruby_current_thread if it points the

akr	2011-01-12 19:35:36 +0900 (Wed, 12 Jan 2011)

  New Revision: 30522

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

  Log:
    * vm.c (thread_free): reset ruby_current_thread if it points the
      thread to free.
    * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if
      there is no current thread.
      [ruby-dev:43000]

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
    trunk/vm.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30521)
+++ ChangeLog	(revision 30522)
@@ -1,3 +1,11 @@
+Wed Jan 12 19:28:23 2011  Tanaka Akira  <akr@f...>
+
+	* vm.c (thread_free): reset ruby_current_thread if it points the
+	  thread to free.
+	* gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if
+	  there is no current thread.
+	  [ruby-dev:43000]
+
 Wed Jan 12 19:09:29 2011  Tanaka Akira  <akr@f...>
 
 	* enum.c (sort_by_i): reenter check more strictly.
Index: gc.c
===================================================================
--- gc.c	(revision 30521)
+++ gc.c	(revision 30522)
@@ -1958,7 +1958,10 @@
     objspace->heap.final_num += final_num;
 
     if (deferred_final_list) {
-	RUBY_VM_SET_FINALIZER_INTERRUPT(GET_THREAD());
+        rb_thread_t *th = GET_THREAD();
+        if (th) {
+            RUBY_VM_SET_FINALIZER_INTERRUPT(th);
+        }
     }
 }
 
Index: vm.c
===================================================================
--- vm.c	(revision 30521)
+++ vm.c	(revision 30522)
@@ -1730,6 +1730,8 @@
 #endif
 	    ruby_xfree(ptr);
 	}
+        if (ruby_current_thread == th)
+            ruby_current_thread = NULL;
     }
     RUBY_FREE_LEAVE("thread");
 }

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

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