diff options
Diffstat (limited to 'libguile/whippet/api/gc-assert.h')
-rw-r--r-- | libguile/whippet/api/gc-assert.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libguile/whippet/api/gc-assert.h b/libguile/whippet/api/gc-assert.h new file mode 100644 index 000000000..c3fa6b749 --- /dev/null +++ b/libguile/whippet/api/gc-assert.h @@ -0,0 +1,21 @@ +#ifndef GC_ASSERT_H +#define GC_ASSERT_H + +#include "gc-config.h" + +#define GC_UNLIKELY(e) __builtin_expect(e, 0) +#define GC_LIKELY(e) __builtin_expect(e, 1) + +#define GC_CRASH() __builtin_trap() + +#if GC_DEBUG +#define GC_ASSERT(x) do { if (GC_UNLIKELY(!(x))) GC_CRASH(); } while (0) +#define GC_UNREACHABLE() GC_CRASH() +#else +#define GC_ASSERT(x) do { } while (0) +#define GC_UNREACHABLE() __builtin_unreachable() +#endif + +#define GC_ASSERT_EQ(a, b) GC_ASSERT((a) == (b)) + +#endif // GC_ASSERT_H |