MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1#ifndef DEBUG_H
2#define DEBUG_H
3
4#include <stdbool.h>
5
6typedef enum {
7 SV_DEBUG_DUMP_BYTECODE = 1u << 0,
8 SV_DEBUG_DUMP_JIT = 1u << 1,
9 SV_DEBUG_JIT_WARN = 1u << 2,
10 SV_DEBUG_PARSE = 1u << 3,
11 SV_DEBUG_COMPILE = 1u << 4,
12} sv_debug_flag_t;
13
14bool sv_debug_enabled(sv_debug_flag_t flag);
15void sv_debug_enable(sv_debug_flag_t flag);
16void sv_debug_disable(sv_debug_flag_t flag);
17void sv_debug_set(sv_debug_flag_t flag, bool enabled);
18
19#define sv_debug_unlikely(flag) __builtin_expect(sv_debug_enabled((flag)), 0)
20#define sv_dump_bytecode_unlikely sv_debug_unlikely(SV_DEBUG_DUMP_BYTECODE)
21#define sv_dump_jit_unlikely sv_debug_unlikely(SV_DEBUG_DUMP_JIT)
22#define sv_jit_warn_unlikely sv_debug_unlikely(SV_DEBUG_JIT_WARN)
23#define sv_parse_trace_unlikely sv_debug_unlikely(SV_DEBUG_PARSE)
24#define sv_compile_trace_unlikely sv_debug_unlikely(SV_DEBUG_COMPILE)
25
26#endif