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