1 | /* |
2 | ** Error handling. |
3 | ** Copyright (C) 2005-2021 Mike Pall. See Copyright Notice in luajit.h |
4 | */ |
5 | |
6 | #ifndef _LJ_ERR_H |
7 | #define _LJ_ERR_H |
8 | |
9 | #include <stdarg.h> |
10 | |
11 | #include "lj_obj.h" |
12 | |
13 | typedef enum { |
14 | #define ERRDEF(name, msg) \ |
15 | LJ_ERR_##name, LJ_ERR_##name##_ = LJ_ERR_##name + sizeof(msg)-1, |
16 | #include "lj_errmsg.h" |
17 | LJ_ERR__MAX |
18 | } ErrMsg; |
19 | |
20 | LJ_DATA const char *lj_err_allmsg; |
21 | #define err2msg(em) (lj_err_allmsg+(int)(em)) |
22 | |
23 | LJ_FUNC GCstr *lj_err_str(lua_State *L, ErrMsg em); |
24 | LJ_FUNCA_NORET void LJ_FASTCALL lj_err_throw(lua_State *L, int errcode); |
25 | LJ_FUNC_NORET void lj_err_mem(lua_State *L); |
26 | LJ_FUNC_NORET void LJ_FASTCALL lj_err_run(lua_State *L); |
27 | #if LJ_HASJIT |
28 | LJ_FUNCA_NORET void LJ_FASTCALL lj_err_trace(lua_State *L, int errcode); |
29 | #endif |
30 | LJ_FUNC_NORET void lj_err_msg(lua_State *L, ErrMsg em); |
31 | LJ_FUNC_NORET void lj_err_lex(lua_State *L, GCstr *src, const char *tok, |
32 | BCLine line, ErrMsg em, va_list argp); |
33 | LJ_FUNC_NORET void lj_err_optype(lua_State *L, cTValue *o, ErrMsg opm); |
34 | LJ_FUNC_NORET void lj_err_comp(lua_State *L, cTValue *o1, cTValue *o2); |
35 | LJ_FUNC_NORET void lj_err_optype_call(lua_State *L, TValue *o); |
36 | LJ_FUNC_NORET void lj_err_callermsg(lua_State *L, const char *msg); |
37 | LJ_FUNC_NORET void lj_err_callerv(lua_State *L, ErrMsg em, ...); |
38 | LJ_FUNC_NORET void lj_err_caller(lua_State *L, ErrMsg em); |
39 | LJ_FUNC_NORET void lj_err_arg(lua_State *L, int narg, ErrMsg em); |
40 | LJ_FUNC_NORET void lj_err_argv(lua_State *L, int narg, ErrMsg em, ...); |
41 | LJ_FUNC_NORET void lj_err_argtype(lua_State *L, int narg, const char *xname); |
42 | LJ_FUNC_NORET void lj_err_argt(lua_State *L, int narg, int tt); |
43 | |
44 | #if LJ_UNWIND_JIT && !LJ_ABI_WIN |
45 | LJ_FUNC uint8_t *lj_err_register_mcode(void *base, size_t sz, uint8_t *info); |
46 | LJ_FUNC void lj_err_deregister_mcode(void *base, size_t sz, uint8_t *info); |
47 | #else |
48 | #define lj_err_register_mcode(base, sz, info) (info) |
49 | #define lj_err_deregister_mcode(base, sz, info) UNUSED(base) |
50 | #endif |
51 | |
52 | #if LJ_UNWIND_EXT && !LJ_ABI_WIN && defined(LUA_USE_ASSERT) |
53 | LJ_FUNC void lj_err_verify(void); |
54 | #else |
55 | #define lj_err_verify() ((void)0) |
56 | #endif |
57 | |
58 | #endif |
59 | |