mirror of
https://github.com/holub/mame
synced 2025-06-23 21:06:38 +03:00

Compile Lua as C++. When Lua is compiled as C, it uses setjmp/longjmp for error handling, resulting in failure to unwind intermediate stack frames. Trying to ensure no objects with non-trivial destructors are in scope when raising a Lua error is error-prone. In particular, converting an exception to a Lua error becomes convoluted, and raising a Lua error from a constructor is effectively impossible. Updated Lua to 5.4.4 - this includes a brand-new garbage collector implementation with better performance. The main thing removed is the deprecated bitlib. Updated sol2 to version 3.3.0 - this adds support for Lua 5.4 and fixes a number of issues, including not correctly handling errors when Lua is built as C++. Updated LuaFileSystem to version 1.8.0 - this adds support for symbolic links on Windows, as well as Lua 5.4 compatibility. Updated LuaSQLite3 to version 0.9.5 - this fixes issues in multi-threaded environments, as well as Lua 5.4 compatibility. Fixed double-free after attempting to construct a debugger expression from Lua with an invalid string, and exposed expression error to Lua in a better way. Added warning level print function to Lua. Fixed saving cheats with shift operators in expressions, although this code isn't actually used as there's no cheat editor.
64 lines
2.1 KiB
C
64 lines
2.1 KiB
C
/*
|
|
** $Id: ldebug.h $
|
|
** Auxiliary functions from Debug Interface module
|
|
** See Copyright Notice in lua.h
|
|
*/
|
|
|
|
#ifndef ldebug_h
|
|
#define ldebug_h
|
|
|
|
|
|
#include "lstate.h"
|
|
|
|
|
|
#define pcRel(pc, p) (cast_int((pc) - (p)->code) - 1)
|
|
|
|
|
|
/* Active Lua function (given call info) */
|
|
#define ci_func(ci) (clLvalue(s2v((ci)->func)))
|
|
|
|
|
|
#define resethookcount(L) (L->hookcount = L->basehookcount)
|
|
|
|
/*
|
|
** mark for entries in 'lineinfo' array that has absolute information in
|
|
** 'abslineinfo' array
|
|
*/
|
|
#define ABSLINEINFO (-0x80)
|
|
|
|
|
|
/*
|
|
** MAXimum number of successive Instructions WiTHout ABSolute line
|
|
** information. (A power of two allows fast divisions.)
|
|
*/
|
|
#if !defined(MAXIWTHABS)
|
|
#define MAXIWTHABS 128
|
|
#endif
|
|
|
|
|
|
LUAI_FUNC int luaG_getfuncline (const Proto *f, int pc);
|
|
LUAI_FUNC const char *luaG_findlocal (lua_State *L, CallInfo *ci, int n,
|
|
StkId *pos);
|
|
LUAI_FUNC l_noret luaG_typeerror (lua_State *L, const TValue *o,
|
|
const char *opname);
|
|
LUAI_FUNC l_noret luaG_callerror (lua_State *L, const TValue *o);
|
|
LUAI_FUNC l_noret luaG_forerror (lua_State *L, const TValue *o,
|
|
const char *what);
|
|
LUAI_FUNC l_noret luaG_concaterror (lua_State *L, const TValue *p1,
|
|
const TValue *p2);
|
|
LUAI_FUNC l_noret luaG_opinterror (lua_State *L, const TValue *p1,
|
|
const TValue *p2,
|
|
const char *msg);
|
|
LUAI_FUNC l_noret luaG_tointerror (lua_State *L, const TValue *p1,
|
|
const TValue *p2);
|
|
LUAI_FUNC l_noret luaG_ordererror (lua_State *L, const TValue *p1,
|
|
const TValue *p2);
|
|
LUAI_FUNC l_noret luaG_runerror (lua_State *L, const char *fmt, ...);
|
|
LUAI_FUNC const char *luaG_addinfo (lua_State *L, const char *msg,
|
|
TString *src, int line);
|
|
LUAI_FUNC l_noret luaG_errormsg (lua_State *L);
|
|
LUAI_FUNC int luaG_traceexec (lua_State *L, const Instruction *pc);
|
|
|
|
|
|
#endif
|