]> git.saurik.com Git - redis.git/blame - deps/jemalloc/test/rallocm.c
redis-check-dump now understands dumps produced by Redis 2.6
[redis.git] / deps / jemalloc / test / rallocm.c
CommitLineData
a78e148b 1#define JEMALLOC_MANGLE
2#include "jemalloc_test.h"
3
4int
5main(void)
6{
1d03c1c9 7 size_t pagesize;
a78e148b 8 void *p, *q;
9 size_t sz, tsz;
10 int r;
11
ad4c0b41 12 malloc_printf("Test begin\n");
a78e148b 13
1d03c1c9 14 /* Get page size. */
15 {
ad4c0b41 16#ifdef _WIN32
17 SYSTEM_INFO si;
18 GetSystemInfo(&si);
19 pagesize = (size_t)si.dwPageSize;
20#else
1d03c1c9 21 long result = sysconf(_SC_PAGESIZE);
22 assert(result != -1);
23 pagesize = (size_t)result;
ad4c0b41 24#endif
1d03c1c9 25 }
26
ad4c0b41 27 r = allocm(&p, &sz, 42, 0);
a78e148b 28 if (r != ALLOCM_SUCCESS) {
ad4c0b41 29 malloc_printf("Unexpected allocm() error\n");
a78e148b 30 abort();
31 }
32
33 q = p;
ad4c0b41 34 r = rallocm(&q, &tsz, sz, 0, ALLOCM_NO_MOVE);
a78e148b 35 if (r != ALLOCM_SUCCESS)
ad4c0b41 36 malloc_printf("Unexpected rallocm() error\n");
a78e148b 37 if (q != p)
ad4c0b41 38 malloc_printf("Unexpected object move\n");
a78e148b 39 if (tsz != sz) {
ad4c0b41 40 malloc_printf("Unexpected size change: %zu --> %zu\n",
a78e148b 41 sz, tsz);
42 }
43
44 q = p;
ad4c0b41 45 r = rallocm(&q, &tsz, sz, 5, ALLOCM_NO_MOVE);
a78e148b 46 if (r != ALLOCM_SUCCESS)
ad4c0b41 47 malloc_printf("Unexpected rallocm() error\n");
a78e148b 48 if (q != p)
ad4c0b41 49 malloc_printf("Unexpected object move\n");
a78e148b 50 if (tsz != sz) {
ad4c0b41 51 malloc_printf("Unexpected size change: %zu --> %zu\n",
a78e148b 52 sz, tsz);
53 }
54
55 q = p;
ad4c0b41 56 r = rallocm(&q, &tsz, sz + 5, 0, ALLOCM_NO_MOVE);
a78e148b 57 if (r != ALLOCM_ERR_NOT_MOVED)
ad4c0b41 58 malloc_printf("Unexpected rallocm() result\n");
a78e148b 59 if (q != p)
ad4c0b41 60 malloc_printf("Unexpected object move\n");
a78e148b 61 if (tsz != sz) {
ad4c0b41 62 malloc_printf("Unexpected size change: %zu --> %zu\n",
a78e148b 63 sz, tsz);
64 }
65
66 q = p;
ad4c0b41 67 r = rallocm(&q, &tsz, sz + 5, 0, 0);
a78e148b 68 if (r != ALLOCM_SUCCESS)
ad4c0b41 69 malloc_printf("Unexpected rallocm() error\n");
a78e148b 70 if (q == p)
ad4c0b41 71 malloc_printf("Expected object move\n");
a78e148b 72 if (tsz == sz) {
ad4c0b41 73 malloc_printf("Expected size change: %zu --> %zu\n",
a78e148b 74 sz, tsz);
75 }
76 p = q;
77 sz = tsz;
78
ad4c0b41 79 r = rallocm(&q, &tsz, pagesize*2, 0, 0);
a78e148b 80 if (r != ALLOCM_SUCCESS)
ad4c0b41 81 malloc_printf("Unexpected rallocm() error\n");
a78e148b 82 if (q == p)
ad4c0b41 83 malloc_printf("Expected object move\n");
a78e148b 84 if (tsz == sz) {
ad4c0b41 85 malloc_printf("Expected size change: %zu --> %zu\n",
a78e148b 86 sz, tsz);
87 }
88 p = q;
89 sz = tsz;
90
ad4c0b41 91 r = rallocm(&q, &tsz, pagesize*4, 0, 0);
a78e148b 92 if (r != ALLOCM_SUCCESS)
ad4c0b41 93 malloc_printf("Unexpected rallocm() error\n");
a78e148b 94 if (tsz == sz) {
ad4c0b41 95 malloc_printf("Expected size change: %zu --> %zu\n",
a78e148b 96 sz, tsz);
97 }
98 p = q;
99 sz = tsz;
100
ad4c0b41 101 r = rallocm(&q, &tsz, pagesize*2, 0, ALLOCM_NO_MOVE);
a78e148b 102 if (r != ALLOCM_SUCCESS)
ad4c0b41 103 malloc_printf("Unexpected rallocm() error\n");
a78e148b 104 if (q != p)
ad4c0b41 105 malloc_printf("Unexpected object move\n");
a78e148b 106 if (tsz == sz) {
ad4c0b41 107 malloc_printf("Expected size change: %zu --> %zu\n",
a78e148b 108 sz, tsz);
109 }
110 sz = tsz;
111
ad4c0b41 112 r = rallocm(&q, &tsz, pagesize*4, 0, ALLOCM_NO_MOVE);
a78e148b 113 if (r != ALLOCM_SUCCESS)
ad4c0b41 114 malloc_printf("Unexpected rallocm() error\n");
a78e148b 115 if (q != p)
ad4c0b41 116 malloc_printf("Unexpected object move\n");
a78e148b 117 if (tsz == sz) {
ad4c0b41 118 malloc_printf("Expected size change: %zu --> %zu\n",
a78e148b 119 sz, tsz);
120 }
121 sz = tsz;
122
ad4c0b41 123 dallocm(p, 0);
a78e148b 124
ad4c0b41 125 malloc_printf("Test end\n");
a78e148b 126 return (0);
127}