1#include "jemalloc/internal/malloc_io.h" 2#include "jemalloc/internal/util.h" 3 4/* 5 * Define a custom assert() in order to reduce the chances of deadlock during 6 * assertion failure. 7 */ 8#ifndef assert 9#define assert(e) do { \ 10 if (unlikely(config_debug && !(e))) { \ 11 malloc_printf( \ 12 "<jemalloc>: %s:%d: Failed assertion: \"%s\"\n", \ 13 __FILE__, __LINE__, #e); \ 14 abort(); \ 15 } \ 16} while (0) 17#endif 18 19#ifndef not_reached 20#define not_reached() do { \ 21 if (config_debug) { \ 22 malloc_printf( \ 23 "<jemalloc>: %s:%d: Unreachable code reached\n", \ 24 __FILE__, __LINE__); \ 25 abort(); \ 26 } \ 27 unreachable(); \ 28} while (0) 29#endif 30 31#ifndef not_implemented 32#define not_implemented() do { \ 33 if (config_debug) { \ 34 malloc_printf("<jemalloc>: %s:%d: Not implemented\n", \ 35 __FILE__, __LINE__); \ 36 abort(); \ 37 } \ 38} while (0) 39#endif 40 41#ifndef assert_not_implemented 42#define assert_not_implemented(e) do { \ 43 if (unlikely(config_debug && !(e))) { \ 44 not_implemented(); \ 45 } \ 46} while (0) 47#endif 48 49/* Use to assert a particular configuration, e.g., cassert(config_debug). */ 50#ifndef cassert 51#define cassert(c) do { \ 52 if (unlikely(!(c))) { \ 53 not_reached(); \ 54 } \ 55} while (0) 56#endif 57