memory/jemalloc/src/test/rallocm.c

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

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

mercurial