@@ -726,7 +726,7 @@ void *gc_alloc(size_t n_bytes, unsigned int alloc_flags) {
726726 #endif
727727
728728 #if EXTENSIVE_HEAP_PROFILING
729- gc_dump_alloc_table ();
729+ gc_dump_alloc_table (& mp_plat_print );
730730 #endif
731731
732732 return ret_ptr ;
@@ -806,7 +806,7 @@ void gc_free(void *ptr) {
806806 GC_EXIT ();
807807
808808 #if EXTENSIVE_HEAP_PROFILING
809- gc_dump_alloc_table ();
809+ gc_dump_alloc_table (& mp_plat_print );
810810 #endif
811811}
812812
@@ -960,7 +960,7 @@ void *gc_realloc(void *ptr_in, size_t n_bytes, bool allow_move) {
960960 GC_EXIT ();
961961
962962 #if EXTENSIVE_HEAP_PROFILING
963- gc_dump_alloc_table ();
963+ gc_dump_alloc_table (& mp_plat_print );
964964 #endif
965965
966966 return ptr_in ;
@@ -985,7 +985,7 @@ void *gc_realloc(void *ptr_in, size_t n_bytes, bool allow_move) {
985985 #endif
986986
987987 #if EXTENSIVE_HEAP_PROFILING
988- gc_dump_alloc_table ();
988+ gc_dump_alloc_table (& mp_plat_print );
989989 #endif
990990
991991 return ptr_in ;
@@ -1019,23 +1019,23 @@ void *gc_realloc(void *ptr_in, size_t n_bytes, bool allow_move) {
10191019}
10201020#endif // Alternative gc_realloc impl
10211021
1022- void gc_dump_info (void ) {
1022+ void gc_dump_info (const mp_print_t * print ) {
10231023 gc_info_t info ;
10241024 gc_info (& info );
1025- mp_printf (& mp_plat_print , "GC: total: %u, used: %u, free: %u\n" ,
1025+ mp_printf (print , "GC: total: %u, used: %u, free: %u\n" ,
10261026 (uint )info .total , (uint )info .used , (uint )info .free );
1027- mp_printf (& mp_plat_print , " No. of 1-blocks: %u, 2-blocks: %u, max blk sz: %u, max free sz: %u\n" ,
1027+ mp_printf (print , " No. of 1-blocks: %u, 2-blocks: %u, max blk sz: %u, max free sz: %u\n" ,
10281028 (uint )info .num_1block , (uint )info .num_2block , (uint )info .max_block , (uint )info .max_free );
10291029}
10301030
1031- void gc_dump_alloc_table (void ) {
1031+ void gc_dump_alloc_table (const mp_print_t * print ) {
10321032 GC_ENTER ();
10331033 static const size_t DUMP_BYTES_PER_LINE = 64 ;
10341034 for (mp_state_mem_area_t * area = & MP_STATE_MEM (area ); area != NULL ; area = NEXT_AREA (area )) {
10351035 #if !EXTENSIVE_HEAP_PROFILING
10361036 // When comparing heap output we don't want to print the starting
10371037 // pointer of the heap because it changes from run to run.
1038- mp_printf (& mp_plat_print , "GC memory layout; from %p:" , area -> gc_pool_start );
1038+ mp_printf (print , "GC memory layout; from %p:" , area -> gc_pool_start );
10391039 #endif
10401040 for (size_t bl = 0 ; bl < area -> gc_alloc_table_byte_len * BLOCKS_PER_ATB ; bl ++ ) {
10411041 if (bl % DUMP_BYTES_PER_LINE == 0 ) {
@@ -1048,7 +1048,7 @@ void gc_dump_alloc_table(void) {
10481048 }
10491049 if (bl2 - bl >= 2 * DUMP_BYTES_PER_LINE ) {
10501050 // there are at least 2 lines containing only free blocks, so abbreviate their printing
1051- mp_printf (& mp_plat_print , "\n (%u lines all free)" , (uint )(bl2 - bl ) / DUMP_BYTES_PER_LINE );
1051+ mp_printf (print , "\n (%u lines all free)" , (uint )(bl2 - bl ) / DUMP_BYTES_PER_LINE );
10521052 bl = bl2 & (~(DUMP_BYTES_PER_LINE - 1 ));
10531053 if (bl >= area -> gc_alloc_table_byte_len * BLOCKS_PER_ATB ) {
10541054 // got to end of heap
@@ -1058,7 +1058,7 @@ void gc_dump_alloc_table(void) {
10581058 }
10591059 // print header for new line of blocks
10601060 // (the cast to uint32_t is for 16-bit ports)
1061- mp_printf (& mp_plat_print , "\n%08x: " , (uint )(bl * BYTES_PER_BLOCK ));
1061+ mp_printf (print , "\n%08x: " , (uint )(bl * BYTES_PER_BLOCK ));
10621062 }
10631063 int c = ' ' ;
10641064 switch (ATB_GET_KIND (area , bl )) {
@@ -1151,9 +1151,9 @@ void gc_dump_alloc_table(void) {
11511151 c = 'm' ;
11521152 break ;
11531153 }
1154- mp_printf (& mp_plat_print , "%c" , c );
1154+ mp_printf (print , "%c" , c );
11551155 }
1156- mp_print_str (& mp_plat_print , "\n" );
1156+ mp_print_str (print , "\n" );
11571157 }
11581158 GC_EXIT ();
11591159}
@@ -1185,13 +1185,13 @@ void gc_test(void) {
11851185 }
11861186
11871187 printf ("Before GC:\n" );
1188- gc_dump_alloc_table ();
1188+ gc_dump_alloc_table (& mp_plat_print );
11891189 printf ("Starting GC...\n" );
11901190 gc_collect_start ();
11911191 gc_collect_root (ptrs , sizeof (ptrs ) / sizeof (void * ));
11921192 gc_collect_end ();
11931193 printf ("After GC:\n" );
1194- gc_dump_alloc_table ();
1194+ gc_dump_alloc_table (& mp_plat_print );
11951195}
11961196#endif
11971197
0 commit comments