Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 #define JEMALLOC_MANGLE
2 #include "jemalloc_test.h"
4 void *
5 je_thread_start(void *arg)
6 {
7 int err;
8 size_t sz;
9 bool e0, e1;
11 sz = sizeof(bool);
12 if ((err = mallctl("thread.tcache.enabled", &e0, &sz, NULL, 0))) {
13 if (err == ENOENT) {
14 #ifdef JEMALLOC_TCACHE
15 assert(false);
16 #endif
17 }
18 goto label_return;
19 }
21 if (e0) {
22 e1 = false;
23 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz)
24 == 0);
25 assert(e0);
26 }
28 e1 = true;
29 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
30 assert(e0 == false);
32 e1 = true;
33 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
34 assert(e0);
36 e1 = false;
37 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
38 assert(e0);
40 e1 = false;
41 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
42 assert(e0 == false);
44 free(malloc(1));
45 e1 = true;
46 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
47 assert(e0 == false);
49 free(malloc(1));
50 e1 = true;
51 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
52 assert(e0);
54 free(malloc(1));
55 e1 = false;
56 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
57 assert(e0);
59 free(malloc(1));
60 e1 = false;
61 assert(mallctl("thread.tcache.enabled", &e0, &sz, &e1, sz) == 0);
62 assert(e0 == false);
64 free(malloc(1));
65 label_return:
66 return (NULL);
67 }
69 int
70 main(void)
71 {
72 int ret = 0;
73 je_thread_t thread;
75 malloc_printf("Test begin\n");
77 je_thread_start(NULL);
79 je_thread_create(&thread, je_thread_start, NULL);
80 je_thread_join(thread, (void *)&ret);
82 je_thread_start(NULL);
84 je_thread_create(&thread, je_thread_start, NULL);
85 je_thread_join(thread, (void *)&ret);
87 je_thread_start(NULL);
89 malloc_printf("Test end\n");
90 return (ret);
91 }