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