@@ -90,8 +90,8 @@ void gc_init(void *start, void *end) {
9090 }
9191
9292 DEBUG_printf ("GC layout:\n" );
93- DEBUG_printf (" alloc table at %p, length %u bytes\n" , gc_alloc_table_start , gc_alloc_table_byte_len );
94- DEBUG_printf (" pool at %p, length %u blocks = %u words = %u bytes\n" , gc_pool_start , gc_pool_block_len , gc_pool_word_len , gc_pool_word_len * BYTES_PER_WORD );
93+ DEBUG_printf (" alloc table at %p, length " UINT_FMT " bytes\n" , gc_alloc_table_start , gc_alloc_table_byte_len );
94+ DEBUG_printf (" pool at %p, length " UINT_FMT " blocks = " UINT_FMT " words = " UINT_FMT " bytes\n" , gc_pool_start , gc_pool_block_len , gc_pool_word_len , gc_pool_word_len * BYTES_PER_WORD );
9595}
9696
9797#define VERIFY_PTR (ptr ) ( \
@@ -240,7 +240,7 @@ void gc_info(gc_info_t *info) {
240240
241241void * gc_alloc (machine_uint_t n_bytes ) {
242242 machine_uint_t n_blocks = ((n_bytes + BYTES_PER_BLOCK - 1 ) & (~(BYTES_PER_BLOCK - 1 ))) / BYTES_PER_BLOCK ;
243- DEBUG_printf ("gc_alloc(%u bytes -> %u blocks)\n" , n_bytes , n_blocks );
243+ DEBUG_printf ("gc_alloc(" UINT_FMT " bytes -> " UINT_FMT " blocks)\n" , n_bytes , n_blocks );
244244
245245 // check for 0 allocation
246246 if (n_blocks == 0 ) {
@@ -350,20 +350,25 @@ void gc_dump_info() {
350350 info .num_1block , info .num_2block , info .max_block );
351351}
352352
353- #if DEBUG_PRINT
354- STATIC void gc_dump_at ( void ) {
353+ void gc_dump_alloc_table ( void ) {
354+ printf ( "GC memory layout:" );
355355 for (machine_uint_t bl = 0 ; bl < gc_alloc_table_byte_len * BLOCKS_PER_ATB ; bl ++ ) {
356- printf ("block %06u " , bl );
356+ if (bl % 64 == 0 ) {
357+ printf ("\n%04x: " , (uint )bl );
358+ }
359+ int c = ' ' ;
357360 switch (ATB_GET_KIND (bl )) {
358- case AT_FREE : printf ( "FREE" ) ; break ;
359- case AT_HEAD : printf ( "HEAD" ) ; break ;
360- case AT_TAIL : printf ( "TAIL" ) ; break ;
361- default : printf ( "MARK" ) ; break ;
361+ case AT_FREE : c = '.' ; break ;
362+ case AT_HEAD : c = 'h' ; break ;
363+ case AT_TAIL : c = 't' ; break ;
364+ case AT_MARK : c = 'm' ; break ;
362365 }
363- printf ("\n" );
366+ printf ("%c" , c );
364367 }
368+ printf ("\n" );
365369}
366370
371+ #if DEBUG_PRINT
367372void gc_test (void ) {
368373 machine_uint_t len = 500 ;
369374 machine_uint_t * heap = malloc (len );
@@ -389,13 +394,13 @@ void gc_test(void) {
389394 }
390395
391396 printf ("Before GC:\n" );
392- gc_dump_at ();
397+ gc_dump_alloc_table ();
393398 printf ("Starting GC...\n" );
394399 gc_collect_start ();
395400 gc_collect_root (ptrs , sizeof (ptrs ) / sizeof (void * ));
396401 gc_collect_end ();
397402 printf ("After GC:\n" );
398- gc_dump_at ();
403+ gc_dump_alloc_table ();
399404}
400405#endif
401406
0 commit comments