From 455f6a2a2cc95bb341f7e341f662cfa429875b37 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Fri, 28 Oct 2016 11:45:48 +0300 Subject: [PATCH] Eliminate duplicate log messages in GC_mark_from This change also eliminates 'bad copy-paste' code defect in GC_mark_from. * mark.c [ENABLE_TRACE] (GC_mark_from): Combine 2 logged messages about "large section" and "splitting" into a single one; replace "Tracing from" logged message with "small object" message (which is not logged for large objects). --- mark.c | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/mark.c b/mark.c index 8b999aa..67481b9 100644 --- a/mark.c +++ b/mark.c @@ -640,14 +640,6 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, || (word)(current_p + descr) <= (word)GC_least_plausible_heap_addr || (word)current_p >= (word)GC_greatest_plausible_heap_addr); -# ifdef ENABLE_TRACE - if ((word)GC_trace_addr >= (word)current_p - && (word)GC_trace_addr < (word)(current_p + descr)) { - GC_log_printf("GC #%u: large section; start %p, len %lu\n", - (unsigned)GC_gc_no, (void *)current_p, - (unsigned long)descr); - } -# endif /* ENABLE_TRACE */ # ifdef PARALLEL_MARK # define SHARE_BYTES 2048 if (descr > SHARE_BYTES && GC_parallel @@ -661,11 +653,13 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, # ifdef ENABLE_TRACE if ((word)GC_trace_addr >= (word)current_p && (word)GC_trace_addr < (word)(current_p + descr)) { - GC_log_printf("GC #%u: splitting (parallel) %p at %p\n", - (unsigned)GC_gc_no, (void *)current_p, - (void *)(current_p + new_size)); + GC_log_printf("GC #%u: large section; start %p, len %lu," + " splitting (parallel) at %p\n", + (unsigned)GC_gc_no, (void *)current_p, + (unsigned long)descr, + (void *)(current_p + new_size)); } -# endif /* ENABLE_TRACE */ +# endif current_p += new_size; descr -= new_size; goto retry; @@ -678,11 +672,12 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, # ifdef ENABLE_TRACE if ((word)GC_trace_addr >= (word)current_p && (word)GC_trace_addr < (word)(current_p + descr)) { - GC_log_printf("GC #%u: splitting %p at %p\n", + GC_log_printf("GC #%u: large section; start %p, len %lu," + " splitting at %p\n", (unsigned)GC_gc_no, (void *)current_p, - (void *)limit); + (unsigned long)descr, (void *)limit); } -# endif /* ENABLE_TRACE */ +# endif /* Make sure that pointers overlapping the two ranges are */ /* considered. */ limit += sizeof(word) - ALIGNMENT; @@ -796,16 +791,16 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, if (descr < sizeof(word)) continue; # endif - limit = current_p + (word)descr; - } -# ifdef ENABLE_TRACE +# ifdef ENABLE_TRACE if ((word)GC_trace_addr >= (word)current_p - && (word)GC_trace_addr < (word)limit) { - GC_log_printf("GC #%u: Tracing from %p, length is %lu\n", + && (word)GC_trace_addr < (word)(current_p + descr)) { + GC_log_printf("GC #%u: small object; start %p, len %lu\n", (unsigned)GC_gc_no, (void *)current_p, (unsigned long)descr); } -# endif /* ENABLE_TRACE */ +# endif + limit = current_p + (word)descr; + } /* The simple case in which we're scanning a range. */ GC_ASSERT(!((word)current_p & (ALIGNMENT-1))); credit -= limit - current_p; -- 2.7.4