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