MCPcopy Create free account
hub / github.com/emscripten-core/emscripten / emmalloc_free_dynamic_memory

Function emmalloc_free_dynamic_memory

system/lib/emmalloc.c:1366–1389  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1364}
1365
1366size_t emmalloc_free_dynamic_memory() {
1367 size_t freeDynamicMemory = 0;
1368
1369 int bucketIndex = 0;
1370
1371 MALLOC_ACQUIRE();
1372 BUCKET_BITMASK_T bucketMask = freeRegionBucketsUsed;
1373
1374 // Loop through each bucket that has free regions in it, based on bits set in freeRegionBucketsUsed bitmap.
1375 while (bucketMask) {
1376 BUCKET_BITMASK_T indexAdd = __builtin_ctzll(bucketMask);
1377 bucketIndex += indexAdd;
1378 bucketMask >>= indexAdd;
1379 for (Region *freeRegion = freeRegionBuckets[bucketIndex].next;
1380 freeRegion != &freeRegionBuckets[bucketIndex];
1381 freeRegion = freeRegion->next) {
1382 freeDynamicMemory += freeRegion->size - REGION_HEADER_SIZE;
1383 }
1384 ++bucketIndex;
1385 bucketMask >>= 1;
1386 }
1387 MALLOC_RELEASE();
1388 return freeDynamicMemory;
1389}
1390
1391size_t emmalloc_compute_free_dynamic_memory_fragmentation_map(size_t freeMemorySizeMap[32]) {
1392 memset((void*)freeMemorySizeMap, 0, sizeof(freeMemorySizeMap[0])*32);

Callers 2

mainFunction · 0.85
mainFunction · 0.85

Calls

no outgoing calls

Tested by 2

mainFunction · 0.68
mainFunction · 0.68