diff options
author | max99x <max99x@gmail.com> | 2011-07-08 08:33:45 +0300 |
---|---|---|
committer | max99x <max99x@gmail.com> | 2011-07-08 08:39:31 +0300 |
commit | 1bd1893888ebe52b6e7676becddbecc577f0e169 (patch) | |
tree | 00bc29bdf7a393b28aca2704c4de39c9ca538604 /tests/dlmalloc_test.c | |
parent | cfbdf063100f6c7c8405f582d03034d6d791f642 (diff) |
* Added support for automatically determining llvm-gcc/clang data layout in emscripten.py.
* Added a dlmalloc linking test.
* Fixed double-evaling of JSON in emscripten.py when --dlmalloc is passed.
Diffstat (limited to 'tests/dlmalloc_test.c')
-rw-r--r-- | tests/dlmalloc_test.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/dlmalloc_test.c b/tests/dlmalloc_test.c new file mode 100644 index 00000000..6fbc45ab --- /dev/null +++ b/tests/dlmalloc_test.c @@ -0,0 +1,41 @@ +// Emscripten tests + +#include <stdio.h> +#include <stdlib.h> +#include <assert.h> + +int main(int ac, char **av) { + int NUM = ac > 1 ? atoi(av[1]) : 0; + int REPS = ac > 2 ? atoi(av[2]) : 0; + int c1 = 0, c2 = 0; + for (int x = 0; x < REPS; x++) { + char* allocations[NUM]; + for (int i = 0; i < NUM/2; i++) { + allocations[i] = (char*)malloc((11*i)%1024 + x); + assert(allocations[i]); + if (i > 10 && i%4 == 1 && allocations[i-10]) { + free(allocations[i-10]); + allocations[i-10] = NULL; + } + } + for (int i = NUM/2; i < NUM; i++) { + allocations[i] = (char*)malloc(1024*(i+1)); + assert(allocations[i]); + if (i > 10 && i%4 != 1 && allocations[i-10]) { + free(allocations[i-10]); + allocations[i-10] = NULL; + } + } + char* first = allocations[0]; + for (int i = 0; i < NUM; i++) { + if (allocations[i]) { + free(allocations[i]); + } + } + char *last = (char*)malloc(512); // should be identical, as we free'd it all + char *newer = (char*)malloc(512); // should be different + c1 += first == last; + c2 += first == newer; + } + printf("*%d,%d*\n", c1, c2); +} |