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

ruby-changes:21411

From: nobu <ko1@a...>
Date: Thu, 13 Oct 2011 18:04:40 +0900 (JST)
Subject: [ruby-changes:21411] nobu:r33460 (trunk): * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):

nobu	2011-10-13 18:04:29 +0900 (Thu, 13 Oct 2011)

  New Revision: 33460

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

  Log:
    * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
      should use ATOMIC_EXCHANGE() to check the previous value.
      [ruby-dev:44596] [Bug #5439]

  Modified files:
    trunk/ChangeLog
    trunk/gc.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 33459)
+++ ChangeLog	(revision 33460)
@@ -1,3 +1,9 @@
+Thu Oct 13 18:04:27 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
+	  should use ATOMIC_EXCHANGE() to check the previous value.
+	  [ruby-dev:44596] [Bug #5439]
+
 Wed Oct 12 23:39:58 2011  Hiroshi Nakamura  <nahi@r...>
 
 	* test/openssl/test_ssl.rb: Move duplicated tests for SSL::Session to
Index: gc.c
===================================================================
--- gc.c	(revision 33459)
+++ gc.c	(revision 33460)
@@ -2977,7 +2977,7 @@
 rb_gc_finalize_deferred(void)
 {
     rb_objspace_t *objspace = &rb_objspace;
-    if (ATOMIC_SET(finalizing, 1)) return;
+    if (ATOMIC_EXCHANGE(finalizing, 1)) return;
     finalize_deferred(objspace);
     ATOMIC_SET(finalizing, 0);
 }
@@ -3031,7 +3031,7 @@
     /* run finalizers */
     gc_clear_mark_on_sweep_slots(objspace);
 
-    if (ATOMIC_SET(finalizing, 1)) return;
+    if (ATOMIC_EXCHANGE(finalizing, 1)) return;
 
     do {
 	/* XXX: this loop will make no sense */

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

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