From b41b850b88e101576f79598a6063249b87dd68af Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Sun, 23 Dec 2012 13:25:59 +0400 Subject: [PATCH] Move GC_print_trace code inside LOCK/UNLOCK to GC_print_trace_inner (code refactoring) * mark.c (GC_print_trace_inner): New function (only if TRACE_BUF). * mark.c (GC_print_trace): Move code to GC_print_trace_inner (except for LOCK/UNLOCK); invoke GC_print_trace_inner (either with lock held or not depending on "lock" variable value). --- mark.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/mark.c b/mark.c index 08753b6..ccce7bf 100644 --- a/mark.c +++ b/mark.c @@ -1453,18 +1453,15 @@ void GC_add_trace_entry(char *kind, word arg1, word arg2) if (GC_trace_buf_ptr >= TRACE_ENTRIES) GC_trace_buf_ptr = 0; } -void GC_print_trace(word gc_no, GC_bool lock) +void GC_print_trace_inner(word gc_no) { int i; struct trace_entry *p; - DCL_LOCK_STATE; - if (lock) LOCK(); for (i = GC_trace_buf_ptr-1; i != GC_trace_buf_ptr; i--) { if (i < 0) i = TRACE_ENTRIES-1; p = GC_trace_buf + i; if (p -> gc_no < gc_no || p -> kind == 0) { - if (lock) UNLOCK(); return; } GC_printf("Trace:%s (gc:%u, bytes:%lu) 0x%lX, 0x%lX\n", @@ -1473,7 +1470,19 @@ void GC_print_trace(word gc_no, GC_bool lock) (long)p->arg1 ^ 0x80000000L, (long)p->arg2 ^ 0x80000000L); } GC_printf("Trace incomplete\n"); - if (lock) UNLOCK(); +} + +void GC_print_trace(word gc_no, GC_bool lock) +{ + DCL_LOCK_STATE; + + if (lock) { + LOCK(); + GC_print_trace_inner(gc_no); + UNLOCK(); + } else { + GC_print_trace_inner(gc_no); + } } # endif /* TRACE_BUF */ -- 2.7.4