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