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