]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/jemalloc/include/jemalloc/internal/assert.h
Import libxo-1.3.0:
[FreeBSD/FreeBSD.git] / contrib / jemalloc / include / jemalloc / internal / assert.h
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