Skip to content

Commit 97cb6d9

Browse files
authored
Move printing of emmalloc dynamic memory fragmentation map into emmalloc itself, so it can be reused in different test files. (#18255)
1 parent c2e29e0 commit 97cb6d9

File tree

5 files changed

+79
-9
lines changed

5 files changed

+79
-9
lines changed

system/include/emscripten/emmalloc.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ size_t emmalloc_unclaimed_heap_memory(void);
118118
// iterates through all free memory blocks.
119119
size_t emmalloc_compute_free_dynamic_memory_fragmentation_map(size_t freeMemorySizeMap[32]);
120120

121+
// Same as above, but instead of returning the information in an array, prints it directly
122+
// to stdout.
123+
void emmalloc_dump_free_dynamic_memory_fragmentation_map(void);
124+
121125
#ifdef __cplusplus
122126
}
123127
#endif

system/lib/emmalloc.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include <memory.h>
4848
#include <assert.h>
4949
#include <malloc.h>
50+
#include <stdio.h>
5051
#include <emscripten/heap.h>
5152
#include <emscripten/threading.h>
5253

@@ -1428,6 +1429,15 @@ size_t emmalloc_compute_free_dynamic_memory_fragmentation_map(size_t freeMemoryS
14281429
return numFreeMemoryRegions;
14291430
}
14301431

1432+
void emmalloc_dump_free_dynamic_memory_fragmentation_map()
1433+
{
1434+
size_t freeMemorySizeMap[32];
1435+
size_t numFreeMemoryRegions = emmalloc_compute_free_dynamic_memory_fragmentation_map(freeMemorySizeMap);
1436+
printf("numFreeMemoryRegions: %zu\n", numFreeMemoryRegions);
1437+
for(int i = 0; i < 32; ++i)
1438+
printf("Free memory regions of size [%llu,%llu[ bytes: %zu regions\n", 1ull<<i, 1ull<<(i+1), freeMemorySizeMap[i]);
1439+
}
1440+
14311441
size_t emmalloc_unclaimed_heap_memory(void) {
14321442
return emscripten_get_heap_max() - (size_t)sbrk(0);
14331443
}

test/core/test_emmalloc_memory_statistics.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ int main()
1919
printf("emmalloc_validate_memory_regions: %d\n", emmalloc_validate_memory_regions());
2020
printf("emmalloc_dynamic_heap_size : %zu\n", emmalloc_dynamic_heap_size());
2121
printf("emmalloc_free_dynamic_memory : %zu\n", emmalloc_free_dynamic_memory());
22-
size_t numFreeMemoryRegions = 0;
23-
size_t freeMemorySizeMap[32];
24-
numFreeMemoryRegions = emmalloc_compute_free_dynamic_memory_fragmentation_map(freeMemorySizeMap);
25-
printf("numFreeMemoryRegions: %zu\n", numFreeMemoryRegions);
26-
for(int i = 0; i < 32; ++i)
27-
printf("%zu ", freeMemorySizeMap[i]);
28-
printf("\n");
22+
emmalloc_dump_free_dynamic_memory_fragmentation_map();
2923
printf("emmalloc_unclaimed_heap_memory : %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
3024
}

test/core/test_emmalloc_memory_statistics.out

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,36 @@ emmalloc_validate_memory_regions: 0
33
emmalloc_dynamic_heap_size : 106971424
44
emmalloc_free_dynamic_memory : 4210892
55
numFreeMemoryRegions: 3
6-
0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
6+
Free memory regions of size [1,2[ bytes: 0 regions
7+
Free memory regions of size [2,4[ bytes: 0 regions
8+
Free memory regions of size [4,8[ bytes: 0 regions
9+
Free memory regions of size [8,16[ bytes: 0 regions
10+
Free memory regions of size [16,32[ bytes: 0 regions
11+
Free memory regions of size [32,64[ bytes: 0 regions
12+
Free memory regions of size [64,128[ bytes: 0 regions
13+
Free memory regions of size [128,256[ bytes: 1 regions
14+
Free memory regions of size [256,512[ bytes: 0 regions
15+
Free memory regions of size [512,1024[ bytes: 0 regions
16+
Free memory regions of size [1024,2048[ bytes: 0 regions
17+
Free memory regions of size [2048,4096[ bytes: 0 regions
18+
Free memory regions of size [4096,8192[ bytes: 0 regions
19+
Free memory regions of size [8192,16384[ bytes: 0 regions
20+
Free memory regions of size [16384,32768[ bytes: 1 regions
21+
Free memory regions of size [32768,65536[ bytes: 0 regions
22+
Free memory regions of size [65536,131072[ bytes: 0 regions
23+
Free memory regions of size [131072,262144[ bytes: 0 regions
24+
Free memory regions of size [262144,524288[ bytes: 0 regions
25+
Free memory regions of size [524288,1048576[ bytes: 0 regions
26+
Free memory regions of size [1048576,2097152[ bytes: 0 regions
27+
Free memory regions of size [2097152,4194304[ bytes: 0 regions
28+
Free memory regions of size [4194304,8388608[ bytes: 1 regions
29+
Free memory regions of size [8388608,16777216[ bytes: 0 regions
30+
Free memory regions of size [16777216,33554432[ bytes: 0 regions
31+
Free memory regions of size [33554432,67108864[ bytes: 0 regions
32+
Free memory regions of size [67108864,134217728[ bytes: 0 regions
33+
Free memory regions of size [134217728,268435456[ bytes: 0 regions
34+
Free memory regions of size [268435456,536870912[ bytes: 0 regions
35+
Free memory regions of size [536870912,1073741824[ bytes: 0 regions
36+
Free memory regions of size [1073741824,2147483648[ bytes: 0 regions
37+
Free memory regions of size [2147483648,4294967296[ bytes: 0 regions
738
emmalloc_unclaimed_heap_memory : 27176960

test/core/test_emmalloc_memory_statistics64.out

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,36 @@ emmalloc_validate_memory_regions: 0
33
emmalloc_dynamic_heap_size : 106971712
44
emmalloc_free_dynamic_memory : 4211104
55
numFreeMemoryRegions: 3
6-
0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
6+
Free memory regions of size [1,2[ bytes: 0 regions
7+
Free memory regions of size [2,4[ bytes: 0 regions
8+
Free memory regions of size [4,8[ bytes: 0 regions
9+
Free memory regions of size [8,16[ bytes: 0 regions
10+
Free memory regions of size [16,32[ bytes: 0 regions
11+
Free memory regions of size [32,64[ bytes: 0 regions
12+
Free memory regions of size [64,128[ bytes: 0 regions
13+
Free memory regions of size [128,256[ bytes: 0 regions
14+
Free memory regions of size [256,512[ bytes: 1 regions
15+
Free memory regions of size [512,1024[ bytes: 0 regions
16+
Free memory regions of size [1024,2048[ bytes: 0 regions
17+
Free memory regions of size [2048,4096[ bytes: 0 regions
18+
Free memory regions of size [4096,8192[ bytes: 0 regions
19+
Free memory regions of size [8192,16384[ bytes: 0 regions
20+
Free memory regions of size [16384,32768[ bytes: 1 regions
21+
Free memory regions of size [32768,65536[ bytes: 0 regions
22+
Free memory regions of size [65536,131072[ bytes: 0 regions
23+
Free memory regions of size [131072,262144[ bytes: 0 regions
24+
Free memory regions of size [262144,524288[ bytes: 0 regions
25+
Free memory regions of size [524288,1048576[ bytes: 0 regions
26+
Free memory regions of size [1048576,2097152[ bytes: 0 regions
27+
Free memory regions of size [2097152,4194304[ bytes: 0 regions
28+
Free memory regions of size [4194304,8388608[ bytes: 1 regions
29+
Free memory regions of size [8388608,16777216[ bytes: 0 regions
30+
Free memory regions of size [16777216,33554432[ bytes: 0 regions
31+
Free memory regions of size [33554432,67108864[ bytes: 0 regions
32+
Free memory regions of size [67108864,134217728[ bytes: 0 regions
33+
Free memory regions of size [134217728,268435456[ bytes: 0 regions
34+
Free memory regions of size [268435456,536870912[ bytes: 0 regions
35+
Free memory regions of size [536870912,1073741824[ bytes: 0 regions
36+
Free memory regions of size [1073741824,2147483648[ bytes: 0 regions
37+
Free memory regions of size [2147483648,4294967296[ bytes: 0 regions
738
emmalloc_unclaimed_heap_memory : 27176960

0 commit comments

Comments
 (0)