1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/memory/jemalloc/src/test/rallocm.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,127 @@ 1.4 +#define JEMALLOC_MANGLE 1.5 +#include "jemalloc_test.h" 1.6 + 1.7 +int 1.8 +main(void) 1.9 +{ 1.10 + size_t pagesize; 1.11 + void *p, *q; 1.12 + size_t sz, tsz; 1.13 + int r; 1.14 + 1.15 + malloc_printf("Test begin\n"); 1.16 + 1.17 + /* Get page size. */ 1.18 + { 1.19 +#ifdef _WIN32 1.20 + SYSTEM_INFO si; 1.21 + GetSystemInfo(&si); 1.22 + pagesize = (size_t)si.dwPageSize; 1.23 +#else 1.24 + long result = sysconf(_SC_PAGESIZE); 1.25 + assert(result != -1); 1.26 + pagesize = (size_t)result; 1.27 +#endif 1.28 + } 1.29 + 1.30 + r = allocm(&p, &sz, 42, 0); 1.31 + if (r != ALLOCM_SUCCESS) { 1.32 + malloc_printf("Unexpected allocm() error\n"); 1.33 + abort(); 1.34 + } 1.35 + 1.36 + q = p; 1.37 + r = rallocm(&q, &tsz, sz, 0, ALLOCM_NO_MOVE); 1.38 + if (r != ALLOCM_SUCCESS) 1.39 + malloc_printf("Unexpected rallocm() error\n"); 1.40 + if (q != p) 1.41 + malloc_printf("Unexpected object move\n"); 1.42 + if (tsz != sz) { 1.43 + malloc_printf("Unexpected size change: %zu --> %zu\n", 1.44 + sz, tsz); 1.45 + } 1.46 + 1.47 + q = p; 1.48 + r = rallocm(&q, &tsz, sz, 5, ALLOCM_NO_MOVE); 1.49 + if (r != ALLOCM_SUCCESS) 1.50 + malloc_printf("Unexpected rallocm() error\n"); 1.51 + if (q != p) 1.52 + malloc_printf("Unexpected object move\n"); 1.53 + if (tsz != sz) { 1.54 + malloc_printf("Unexpected size change: %zu --> %zu\n", 1.55 + sz, tsz); 1.56 + } 1.57 + 1.58 + q = p; 1.59 + r = rallocm(&q, &tsz, sz + 5, 0, ALLOCM_NO_MOVE); 1.60 + if (r != ALLOCM_ERR_NOT_MOVED) 1.61 + malloc_printf("Unexpected rallocm() result\n"); 1.62 + if (q != p) 1.63 + malloc_printf("Unexpected object move\n"); 1.64 + if (tsz != sz) { 1.65 + malloc_printf("Unexpected size change: %zu --> %zu\n", 1.66 + sz, tsz); 1.67 + } 1.68 + 1.69 + q = p; 1.70 + r = rallocm(&q, &tsz, sz + 5, 0, 0); 1.71 + if (r != ALLOCM_SUCCESS) 1.72 + malloc_printf("Unexpected rallocm() error\n"); 1.73 + if (q == p) 1.74 + malloc_printf("Expected object move\n"); 1.75 + if (tsz == sz) { 1.76 + malloc_printf("Expected size change: %zu --> %zu\n", 1.77 + sz, tsz); 1.78 + } 1.79 + p = q; 1.80 + sz = tsz; 1.81 + 1.82 + r = rallocm(&q, &tsz, pagesize*2, 0, 0); 1.83 + if (r != ALLOCM_SUCCESS) 1.84 + malloc_printf("Unexpected rallocm() error\n"); 1.85 + if (q == p) 1.86 + malloc_printf("Expected object move\n"); 1.87 + if (tsz == sz) { 1.88 + malloc_printf("Expected size change: %zu --> %zu\n", 1.89 + sz, tsz); 1.90 + } 1.91 + p = q; 1.92 + sz = tsz; 1.93 + 1.94 + r = rallocm(&q, &tsz, pagesize*4, 0, 0); 1.95 + if (r != ALLOCM_SUCCESS) 1.96 + malloc_printf("Unexpected rallocm() error\n"); 1.97 + if (tsz == sz) { 1.98 + malloc_printf("Expected size change: %zu --> %zu\n", 1.99 + sz, tsz); 1.100 + } 1.101 + p = q; 1.102 + sz = tsz; 1.103 + 1.104 + r = rallocm(&q, &tsz, pagesize*2, 0, ALLOCM_NO_MOVE); 1.105 + if (r != ALLOCM_SUCCESS) 1.106 + malloc_printf("Unexpected rallocm() error\n"); 1.107 + if (q != p) 1.108 + malloc_printf("Unexpected object move\n"); 1.109 + if (tsz == sz) { 1.110 + malloc_printf("Expected size change: %zu --> %zu\n", 1.111 + sz, tsz); 1.112 + } 1.113 + sz = tsz; 1.114 + 1.115 + r = rallocm(&q, &tsz, pagesize*4, 0, ALLOCM_NO_MOVE); 1.116 + if (r != ALLOCM_SUCCESS) 1.117 + malloc_printf("Unexpected rallocm() error\n"); 1.118 + if (q != p) 1.119 + malloc_printf("Unexpected object move\n"); 1.120 + if (tsz == sz) { 1.121 + malloc_printf("Expected size change: %zu --> %zu\n", 1.122 + sz, tsz); 1.123 + } 1.124 + sz = tsz; 1.125 + 1.126 + dallocm(p, 0); 1.127 + 1.128 + malloc_printf("Test end\n"); 1.129 + return (0); 1.130 +}