From f9a2ba8b116c498d7ab9fb88d3243cfa4e4c5b0b Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Sun, 20 Dec 2015 20:18:43 +0100 Subject: [PATCH] Fix UWORD_COUNT_FORMAT_STRING on 64bit platforms. It should be "unsigned long", not just "unsigned integer". This allows us to remove some questionable casts. heap{space[12]}_size are also changed from size_t to C_uword because all the intermediate calculations for them are done through C_uwords. Besides, C_maximal_heap_size is a C_uword so it doesn't need to be size_t because the value of heap_size can never be bigger than C_maximal_heap_size. This also helps with printf for heap_size, because the "z" modifier seems not as widely supported as %lu. Conflicts: runtime.c --- runtime.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/runtime.c b/runtime.c index cc9ee80..0aa0dd3 100644 --- a/runtime.c +++ b/runtime.c @@ -189,7 +189,7 @@ static C_TLS int timezone; # define ALIGNMENT_HOLE_MARKER ((C_word)0xfffffffffffffffeL) # define FORWARDING_BIT_SHIFT 63 # define UWORD_FORMAT_STRING "0x%016lx" -# define UWORD_COUNT_FORMAT_STRING "%u" +# define UWORD_COUNT_FORMAT_STRING "%lu" #else # define ALIGNMENT_HOLE_MARKER ((C_word)0xfffffffe) # define FORWARDING_BIT_SHIFT 31 @@ -397,12 +397,12 @@ static C_TLS C_byte *new_tospace_top, *new_tospace_limit, *heap_scan_top; -static C_TLS size_t +static C_TLS C_uword heapspace1_size, heapspace2_size, heap_size, scratchspace_size; -static C_TLS C_char +static C_TLS C_char buffer[ STRING_BUFFER_SIZE ], *private_repository = NULL, *current_module_name, @@ -2866,7 +2866,7 @@ C_mutate_slot(C_word *slot, C_word val) bytes = newmssize * sizeof(C_word *); if(debug_mode) - C_dbg(C_text("debug"), C_text("resizing mutation-stack from " UWORD_COUNT_FORMAT_STRING "k to " UWORD_COUNT_FORMAT_STRING "k ...\n"), + C_dbg(C_text("debug"), C_text("resizing mutation-stack from %uk to %uk ...\n"), (mssize * sizeof(C_word *)) / 1024, bytes / 1024); mutation_stack_bottom = (C_word **)realloc(mutation_stack_bottom, bytes); @@ -2923,10 +2923,13 @@ C_regparm C_word C_fcall C_scratch_alloc(C_uword size) new_scratch_top = new_scratch_start; new_scratch_limit = new_scratch_start + new_size; - if(debug_mode) - C_dbg(C_text("debug"), C_text("resizing scratchspace dynamically from " UWORD_COUNT_FORMAT_STRING "k to " UWORD_COUNT_FORMAT_STRING "k ...\n"), + if(debug_mode) { + C_dbg(C_text("debug"), C_text("resizing scratchspace dynamically from " + UWORD_COUNT_FORMAT_STRING "k to " + UWORD_COUNT_FORMAT_STRING "k ...\n"), C_wordstobytes(scratchspace_size) / 1024, C_wordstobytes(new_size) / 1024); + } if(gc_report_flag) { C_dbg(C_text("GC"), C_text("(old) scratchspace: \tstart=" UWORD_FORMAT_STRING @@ -3709,9 +3712,12 @@ C_regparm void C_fcall C_rereclaim2(C_uword size, int relative_resize) if(size > C_maximal_heap_size) size = C_maximal_heap_size; - if(debug_mode) - C_dbg(C_text("debug"), C_text("resizing heap dynamically from " UWORD_COUNT_FORMAT_STRING "k to " UWORD_COUNT_FORMAT_STRING "k ...\n"), + if(debug_mode) { + C_dbg(C_text("debug"), C_text("resizing heap dynamically from " + UWORD_COUNT_FORMAT_STRING "k to " + UWORD_COUNT_FORMAT_STRING "k ...\n"), heap_size / 1024, size / 1024); + } if(gc_report_flag) { C_dbg(C_text("GC"), C_text("(old) fromspace: \tstart=" UWORD_FORMAT_STRING @@ -13152,20 +13158,18 @@ static void C_ccall dump_heap_state_2(C_word c, C_word *av) else C_fprintf(C_stderr, C_text("unknown key " UWORD_FORMAT_STRING), (C_uword)b->key); } - C_fprintf(C_stderr, C_text("\t" UWORD_COUNT_FORMAT_STRING), b->count); + C_fprintf(C_stderr, C_text("\t%d"), b->count); if(b->total > 0) - C_fprintf(C_stderr, C_text("\t" UWORD_COUNT_FORMAT_STRING " bytes"), - (unsigned int)b->total); + C_fprintf(C_stderr, C_text("\t%d bytes"), b->total); C_fputc('\n', C_stderr); C_free(b); } } - C_fprintf(C_stderr, C_text("\ntotal number of blocks: " UWORD_COUNT_FORMAT_STRING - ", immediates: " UWORD_COUNT_FORMAT_STRING "\n"), - (unsigned int)blk, (unsigned int)imm); + C_fprintf(C_stderr, C_text("\ntotal number of blocks: %d, immediates: %d\n"), + blk, imm); C_free(hdump_table); C_kontinue(k, C_SCHEME_UNDEFINED); } -- 2.1.4