Allow custom N_LOCAL_ITERS and ENTRIES_TO_GET values
authorIvan Maidanski <ivmai@mail.ru>
Mon, 18 Sep 2017 21:47:04 +0000 (00:47 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Mon, 18 Sep 2017 21:47:04 +0000 (00:47 +0300)
* mark.c [PARALLEL_MARK] (N_LOCAL_ITERS): Do not define if already
defined.
* mark.c [PARALLEL_MARK] (ENTRIES_TO_GET): Likewise.

mark.c

diff --git a/mark.c b/mark.c
index e56d5f9..c9adca3 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -1040,6 +1040,10 @@ STATIC void GC_return_mark_stack(mse * low, mse * high)
     GC_notify_all_marker();
 }
 
+#ifndef N_LOCAL_ITERS
+# define N_LOCAL_ITERS 1
+#endif
+
 /* Mark from the local mark stack.              */
 /* On return, the local mark stack is empty.    */
 /* But this may be achieved by copying the      */
@@ -1047,7 +1051,6 @@ STATIC void GC_return_mark_stack(mse * low, mse * high)
 STATIC void GC_do_local_mark(mse *local_mark_stack, mse *local_top)
 {
     unsigned n;
-#   define N_LOCAL_ITERS 1
 
 #   ifdef GC_ASSERTIONS
       /* Make sure we don't hold mark lock. */
@@ -1086,7 +1089,9 @@ STATIC void GC_do_local_mark(mse *local_mark_stack, mse *local_top)
     }
 }
 
-#define ENTRIES_TO_GET 5
+#ifndef ENTRIES_TO_GET
+# define ENTRIES_TO_GET 5
+#endif
 
 /* Mark using the local mark stack until the global mark stack is empty */
 /* and there are no active workers. Update GC_first_nonempty to reflect */