File: test_emmalloc_trim.cpp

package info (click to toggle)
emscripten 2.0.12~dfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 108,440 kB
  • sloc: ansic: 510,324; cpp: 384,763; javascript: 84,341; python: 51,362; sh: 50,019; pascal: 4,159; makefile: 3,409; asm: 2,150; lisp: 1,869; ruby: 488; cs: 142
file content (62 lines) | stat: -rw-r--r-- 2,828 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <unistd.h>
#include <emscripten/emmalloc.h>
#include <emscripten/heap.h>

template<typename T>
T round_to_4k(T val){
	return (T)(((size_t)val + 4095) & ~4095);
}

int main()
{
	printf("heap size: %zu\n", emscripten_get_heap_size());
	printf("dynamic heap 0: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 0: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 0: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 0: %p\n", round_to_4k(sbrk(0)));

	void *ptr = malloc(32*1024*1024);
	void *ptr2 = malloc(4*1024*1024);
	printf("%d\n", (int)(ptr && ptr2));
	printf("dynamic heap 1: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 1: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 1: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 1: %p\n", round_to_4k(sbrk(0)));

	int success = emmalloc_trim(0);
	printf("1st trim: %d\n", success);
	printf("dynamic heap 1: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 1: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 1: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 1: %p\n", round_to_4k(sbrk(0)));

	success = emmalloc_trim(0);
	printf("2nd trim: %d\n", success);
	printf("dynamic heap 2: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 2: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 2: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 2: %p\n", round_to_4k(sbrk(0)));
	free(ptr2);

	success = emmalloc_trim(100000);
	printf("3rd trim: %d\n", success);
	printf("dynamic heap 3: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 3: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 3: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 3: %p\n", round_to_4k(sbrk(0)));

	success = emmalloc_trim(100000);
	printf("4th trim: %d\n", success);
	printf("dynamic heap 4: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 4: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 4: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 4: %p\n", round_to_4k(sbrk(0)));

	success = emmalloc_trim(0);
	printf("5th trim: %d\n", success);
	printf("dynamic heap 5: %zu\n", round_to_4k(emmalloc_dynamic_heap_size()));
	printf("free dynamic memory 5: %zu\n", round_to_4k(emmalloc_free_dynamic_memory()));
	printf("unclaimed heap memory 5: %zu\n", round_to_4k(emmalloc_unclaimed_heap_memory()));
	printf("sbrk 5: %p\n", round_to_4k(sbrk(0)));
}