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