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