Jason Evans | ad47e89 | 2014-02-24 22:00:10 -0800 | [diff] [blame] | 1 | #include "test/jemalloc_test.h" |
| 2 | |
| 3 | #define NTHREADS 4 |
| 4 | #define NALLOCS_PER_THREAD 50 |
| 5 | #define DUMP_INTERVAL 1 |
| 6 | #define BT_COUNT_CHECK_INTERVAL 5 |
| 7 | |
| 8 | #define alloc_n_proto(n) \ |
| 9 | void *alloc_##n(unsigned bits); |
| 10 | alloc_n_proto(0) |
| 11 | alloc_n_proto(1) |
| 12 | |
| 13 | #define alloc_n_gen(n) \ |
| 14 | void * \ |
| 15 | alloc_##n(unsigned bits) \ |
| 16 | { \ |
Jason Evans | b037a55 | 2014-02-25 16:11:15 -0800 | [diff] [blame^] | 17 | void *p; \ |
Jason Evans | ad47e89 | 2014-02-24 22:00:10 -0800 | [diff] [blame] | 18 | \ |
Jason Evans | b037a55 | 2014-02-25 16:11:15 -0800 | [diff] [blame^] | 19 | if (bits == 0) \ |
| 20 | p = mallocx(1, 0); \ |
| 21 | else { \ |
Jason Evans | ad47e89 | 2014-02-24 22:00:10 -0800 | [diff] [blame] | 22 | switch (bits & 0x1U) { \ |
Jason Evans | b037a55 | 2014-02-25 16:11:15 -0800 | [diff] [blame^] | 23 | case 0: \ |
| 24 | p = (alloc_0(bits >> 1)); \ |
| 25 | break; \ |
| 26 | case 1: \ |
| 27 | p = (alloc_1(bits >> 1)); \ |
| 28 | break; \ |
Jason Evans | ad47e89 | 2014-02-24 22:00:10 -0800 | [diff] [blame] | 29 | default: not_reached(); \ |
| 30 | } \ |
| 31 | } \ |
Jason Evans | b037a55 | 2014-02-25 16:11:15 -0800 | [diff] [blame^] | 32 | /* Intentionally sabotage tail call optimization. */ \ |
| 33 | assert_ptr_not_null(p, "Unexpected mallocx() failure"); \ |
| 34 | return (p); \ |
Jason Evans | ad47e89 | 2014-02-24 22:00:10 -0800 | [diff] [blame] | 35 | } |