| 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 |  | 
|---|