From ceef8a5a09692a09266eaa2f201f90a6456c62d0 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Fri, 22 Sep 2017 21:37:42 +0300 Subject: [PATCH] Align local_mark_stack in help_marker explicitly * mark.c [PARALLEL_MARK] (GC_help_marker): Declare my_id_mse local variable (of mse type) instead of unsigned my_id; define my_id as macro to my_id_mse.mse_descr.w; cast my_id to unsigned or int in GC_helper_count assignment and GC_mark_local() call. --- mark.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mark.c b/mark.c index d51abeb..28fea0e 100644 --- a/mark.c +++ b/mark.c @@ -1243,7 +1243,8 @@ STATIC void GC_do_parallel_mark(void) /* We do not hold the GC lock, but the requestor does. */ GC_INNER void GC_help_marker(word my_mark_no) { - unsigned my_id; +# define my_id my_id_mse.mse_descr.w + mse my_id_mse; /* align local_mark_stack explicitly */ mse local_mark_stack[LOCAL_MARK_STACK_SIZE]; /* Note: local_mark_stack is quite big (up to 128 KiB). */ @@ -1260,10 +1261,11 @@ GC_INNER void GC_help_marker(word my_mark_no) GC_release_mark_lock(); return; } - GC_helper_count = my_id + 1; + GC_helper_count = (unsigned)my_id + 1; GC_release_mark_lock(); - GC_mark_local(local_mark_stack, my_id); + GC_mark_local(local_mark_stack, (int)my_id); /* GC_mark_local decrements GC_helper_count. */ +# undef my_id } #endif /* PARALLEL_MARK */ -- 2.7.4