summaryrefslogtreecommitdiff
path: root/libguile/whippet/api/gc-assert.h
blob: c3fa6b749a1a9fe62f3145d3b3db9ebc57ecd4fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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