]> granicus.if.org Git - gc/commitdiff
Adjust logged messages in start_mark_threads and GC_thr_init
authorIvan Maidanski <ivmai@mail.ru>
Mon, 19 Nov 2012 05:23:58 +0000 (09:23 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 19 Nov 2012 12:24:27 +0000 (16:24 +0400)
* pthread_support.c (start_mark_threads): Move GC_COND_LOG_PRINTF call
to the function end (i.e., call pthread_attr_destroy first).
* pthread_support.c (GC_thr_init): Do not log number of marker threads
since start_mark_threads logs number of started mark helper threads
(only if PARALLEL_MARK).
* win32_threads.c (start_mark_threads): Update comment; move logging
of started mark helper threads from GC_thr_init().
* win32_threads.c (GC_thr_init): Log corresponding message if parallel
marking is disabled (similar to that in pthread_support.c, only if
PARALLEL_MARK).

pthread_support.c
win32_threads.c

index eb6bad1bdf4e3f1ee5a4f162d04a3b501beacb5c..b5fe6962c4f333019264e30e0df08ab964fc6382 100644 (file)
@@ -399,7 +399,6 @@ static void start_mark_threads(void)
     INIT_REAL_SYMS(); /* for pthread_create */
 
     if (0 != pthread_attr_init(&attr)) ABORT("pthread_attr_init failed");
-
     if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED))
         ABORT("pthread_attr_setdetachstate failed");
 
@@ -429,8 +428,8 @@ static void start_mark_threads(void)
         break;
       }
     }
-    GC_COND_LOG_PRINTF("Started %d mark helper threads\n", GC_markers_m1);
     pthread_attr_destroy(&attr);
+    GC_COND_LOG_PRINTF("Started %d mark helper threads\n", GC_markers_m1);
 }
 
 #endif /* PARALLEL_MARK */
@@ -1083,10 +1082,8 @@ GC_INNER void GC_thr_init(void)
      }
 #  endif
   }
+  GC_COND_LOG_PRINTF("Number of processors = %d\n", GC_nprocs);
 # ifdef PARALLEL_MARK
-    GC_COND_LOG_PRINTF("Number of processors = %d,"
-                       " number of marker threads = %d\n",
-                       GC_nprocs, GC_markers_m1 + 1);
     if (GC_markers_m1 <= 0) {
       /* Disable parallel marking.      */
       GC_parallel = FALSE;
@@ -1098,8 +1095,6 @@ GC_INNER void GC_thr_init(void)
       /* If we are using a parallel marker, actually start helper threads. */
       start_mark_threads();
     }
-# else
-    GC_COND_LOG_PRINTF("Number of processors = %d\n", GC_nprocs);
 # endif
 }
 
index 24d15842db689f00c4c39b1750ef3a6e3275da45..bddafa0a3dbde7cb4f0bcd4b75f70b3e9cac1207 100644 (file)
@@ -1711,10 +1711,8 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
 #     define NUMERIC_THREAD_ID(id) (unsigned long)GC_PTHREAD_PTRVAL(id)
 #   endif
 
-    /* start_mark_threads() is the same as in pthread_support.c except for: */
-    /* - GC_markers_m1 value is adjusted already;                           */
-    /* - thread stack is assumed to be large enough; and                    */
-    /* - statistics about the number of marker threads is printed outside.  */
+    /* start_mark_threads is the same as in pthread_support.c except    */
+    /* for thread stack that is assumed to be large enough.             */
     static void start_mark_threads(void)
     {
       int i;
@@ -1722,7 +1720,6 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
       pthread_t new_thread;
 
       if (0 != pthread_attr_init(&attr)) ABORT("pthread_attr_init failed");
-
       if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED))
         ABORT("pthread_attr_setdetachstate failed");
 
@@ -1737,6 +1734,7 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
         }
       }
       pthread_attr_destroy(&attr);
+      GC_COND_LOG_PRINTF("Started %d mark helper threads\n", GC_markers_m1);
     }
 
     static pthread_mutex_t mark_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -1911,6 +1909,7 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
 #     else
         GC_markers_m1 = i;
 #     endif
+      GC_COND_LOG_PRINTF("Started %d mark helper threads\n", GC_markers_m1);
       if (i == 0) {
         CloseHandle(mark_cv);
         CloseHandle(builder_cv);
@@ -2464,6 +2463,8 @@ GC_INNER void GC_thr_init(void)
          ) {
         /* Disable parallel marking. */
         GC_parallel = FALSE;
+        GC_COND_LOG_PRINTF(
+                "Single marker thread, turning off parallel marking\n");
       } else {
 #       ifndef GC_PTHREADS_PARAMARK
           /* Initialize Win32 event objects for parallel marking.       */
@@ -2489,9 +2490,11 @@ GC_INNER void GC_thr_init(void)
   GC_register_my_thread_inner(&sb, GC_main_thread);
 
 # ifdef PARALLEL_MARK
-    /* If we are using a parallel marker, actually start helper threads. */
-    if (GC_parallel) start_mark_threads();
-    GC_COND_LOG_PRINTF("Started %d mark helper threads\n", GC_markers_m1);
+    if (GC_parallel)
+    {
+      /* If we are using a parallel marker, actually start helper threads. */
+      start_mark_threads();
+    }
 # endif
 }