@@ -726,7 +726,7 @@ void *gc_alloc(size_t n_bytes, unsigned int alloc_flags) {
726
726
#endif
727
727
728
728
#if EXTENSIVE_HEAP_PROFILING
729
- gc_dump_alloc_table ();
729
+ gc_dump_alloc_table (& mp_plat_print );
730
730
#endif
731
731
732
732
return ret_ptr ;
@@ -806,7 +806,7 @@ void gc_free(void *ptr) {
806
806
GC_EXIT ();
807
807
808
808
#if EXTENSIVE_HEAP_PROFILING
809
- gc_dump_alloc_table ();
809
+ gc_dump_alloc_table (& mp_plat_print );
810
810
#endif
811
811
}
812
812
@@ -960,7 +960,7 @@ void *gc_realloc(void *ptr_in, size_t n_bytes, bool allow_move) {
960
960
GC_EXIT ();
961
961
962
962
#if EXTENSIVE_HEAP_PROFILING
963
- gc_dump_alloc_table ();
963
+ gc_dump_alloc_table (& mp_plat_print );
964
964
#endif
965
965
966
966
return ptr_in ;
@@ -985,7 +985,7 @@ void *gc_realloc(void *ptr_in, size_t n_bytes, bool allow_move) {
985
985
#endif
986
986
987
987
#if EXTENSIVE_HEAP_PROFILING
988
- gc_dump_alloc_table ();
988
+ gc_dump_alloc_table (& mp_plat_print );
989
989
#endif
990
990
991
991
return ptr_in ;
@@ -1019,23 +1019,23 @@ void *gc_realloc(void *ptr_in, size_t n_bytes, bool allow_move) {
1019
1019
}
1020
1020
#endif // Alternative gc_realloc impl
1021
1021
1022
- void gc_dump_info (void ) {
1022
+ void gc_dump_info (const mp_print_t * print ) {
1023
1023
gc_info_t info ;
1024
1024
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" ,
1026
1026
(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" ,
1028
1028
(uint )info .num_1block , (uint )info .num_2block , (uint )info .max_block , (uint )info .max_free );
1029
1029
}
1030
1030
1031
- void gc_dump_alloc_table (void ) {
1031
+ void gc_dump_alloc_table (const mp_print_t * print ) {
1032
1032
GC_ENTER ();
1033
1033
static const size_t DUMP_BYTES_PER_LINE = 64 ;
1034
1034
for (mp_state_mem_area_t * area = & MP_STATE_MEM (area ); area != NULL ; area = NEXT_AREA (area )) {
1035
1035
#if !EXTENSIVE_HEAP_PROFILING
1036
1036
// When comparing heap output we don't want to print the starting
1037
1037
// 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 );
1039
1039
#endif
1040
1040
for (size_t bl = 0 ; bl < area -> gc_alloc_table_byte_len * BLOCKS_PER_ATB ; bl ++ ) {
1041
1041
if (bl % DUMP_BYTES_PER_LINE == 0 ) {
@@ -1048,7 +1048,7 @@ void gc_dump_alloc_table(void) {
1048
1048
}
1049
1049
if (bl2 - bl >= 2 * DUMP_BYTES_PER_LINE ) {
1050
1050
// 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 );
1052
1052
bl = bl2 & (~(DUMP_BYTES_PER_LINE - 1 ));
1053
1053
if (bl >= area -> gc_alloc_table_byte_len * BLOCKS_PER_ATB ) {
1054
1054
// got to end of heap
@@ -1058,7 +1058,7 @@ void gc_dump_alloc_table(void) {
1058
1058
}
1059
1059
// print header for new line of blocks
1060
1060
// (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 ));
1062
1062
}
1063
1063
int c = ' ' ;
1064
1064
switch (ATB_GET_KIND (area , bl )) {
@@ -1151,9 +1151,9 @@ void gc_dump_alloc_table(void) {
1151
1151
c = 'm' ;
1152
1152
break ;
1153
1153
}
1154
- mp_printf (& mp_plat_print , "%c" , c );
1154
+ mp_printf (print , "%c" , c );
1155
1155
}
1156
- mp_print_str (& mp_plat_print , "\n" );
1156
+ mp_print_str (print , "\n" );
1157
1157
}
1158
1158
GC_EXIT ();
1159
1159
}
@@ -1185,13 +1185,13 @@ void gc_test(void) {
1185
1185
}
1186
1186
1187
1187
printf ("Before GC:\n" );
1188
- gc_dump_alloc_table ();
1188
+ gc_dump_alloc_table (& mp_plat_print );
1189
1189
printf ("Starting GC...\n" );
1190
1190
gc_collect_start ();
1191
1191
gc_collect_root (ptrs , sizeof (ptrs ) / sizeof (void * ));
1192
1192
gc_collect_end ();
1193
1193
printf ("After GC:\n" );
1194
- gc_dump_alloc_table ();
1194
+ gc_dump_alloc_table (& mp_plat_print );
1195
1195
}
1196
1196
#endif
1197
1197
0 commit comments