diff options
Diffstat (limited to 'tests/dlmalloc_test.c')
-rw-r--r-- | tests/dlmalloc_test.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/dlmalloc_test.c b/tests/dlmalloc_test.c index 6fbc45ab..817778bd 100644 --- a/tests/dlmalloc_test.c +++ b/tests/dlmalloc_test.c @@ -4,7 +4,8 @@ #include <stdlib.h> #include <assert.h> -int main(int ac, char **av) { +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; @@ -12,16 +13,20 @@ int main(int ac, char **av) { char* allocations[NUM]; for (int i = 0; i < NUM/2; i++) { allocations[i] = (char*)malloc((11*i)%1024 + x); + //printf("zz alloc: %d\n", (int)allocations[i]); assert(allocations[i]); if (i > 10 && i%4 == 1 && allocations[i-10]) { + //printf("zz free: %d\n", (int)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)); + //printf("zz alloc: %d\n", (int)allocations[i]); assert(allocations[i]); if (i > 10 && i%4 != 1 && allocations[i-10]) { + //printf("zz free: %d\n", (int)allocations[i-10]); free(allocations[i-10]); allocations[i-10] = NULL; } @@ -29,13 +34,42 @@ int main(int ac, char **av) { char* first = allocations[0]; for (int i = 0; i < NUM; i++) { if (allocations[i]) { + //printf("zz free: %d\n", (int)allocations[i]); free(allocations[i]); } } char *last = (char*)malloc(512); // should be identical, as we free'd it all + //printf("zz last: %d\n", (int)last); char *newer = (char*)malloc(512); // should be different + //printf("zz newer: %d\n", (int)newer); c1 += first == last; c2 += first == newer; } printf("*%d,%d*\n", c1, c2); } + +/* Some debugging tools: Make JS and native code work exactly the same */ +/* +time_t time ( time_t * timer ) +{ + if (timer) *timer = 1; + return 1; +} + +long sysconf(int name) +{ + printf("sysconf: %d (30 is page size)\n", name); + return 4096; +} + +void *sbrk(intptr_t increment) +{ + static char spaace[1024*1024*1]; + static intptr_t where = 0; + printf("sbrk! spaace=%d (%d,%d)\n", (int)&spaace[0], where, increment); // copy the value printed at runtime here in native code into your js + void *ret = &spaace[where]; + where += increment; + return ret; +} +*/ + |