/* Copyright (C) 1997 DJ Delorie, see COPYING.DJ for details */ #include #define BULK 4095 char *buckets[32] = {0}; char *pre_brk=0; int pre_brk_left=0; int dumpstats() { int i, count; char *rv; for (i=0; i<32; i++) { count=0; for (rv=buckets[i]; rv; rv=*(char **)rv) count++; if (count) fprintf(stderr, "%2d %12d %12d\n", i-3, count, (1<= size) { rv = pre_brk; pre_brk += size; pre_brk_left -= size; *(int *)rv = b; rv += 4; *(char **)rv = buckets[b]; buckets[b] = rv; } } rv = buckets[b]; buckets[b] = *(char **)rv; return rv; } test_free(char *ptr) { int b = *(int *)(ptr-4); *(char **)ptr = buckets[b]; buckets[b] = ptr; } char * test_realloc(char *ptr, int size) { char *newptr; int oldsize = 1 << *(int *)(ptr-4); if (size <= oldsize) return ptr; newptr = (char *)test_malloc(size); memcpy(ptr, newptr, oldsize); test_free(ptr); return newptr; }