|
|
@ -800,7 +800,7 @@ static void add_luacov_coroutine_wrapper(lua_State *L)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
lua_State *DFHack::Lua::NewCoroutine(lua_State *L) {
|
|
|
|
lua_State *DFHack::Lua::NewCoroutine(lua_State *L) {
|
|
|
|
if (getenv("DFHACK_ENABLE_LUACOV"))
|
|
|
|
if (Lua::IsCoreContext(L) && getenv("DFHACK_ENABLE_LUACOV"))
|
|
|
|
add_luacov_coroutine_wrapper(L);
|
|
|
|
add_luacov_coroutine_wrapper(L);
|
|
|
|
lua_State *NL = lua_newthread(L);
|
|
|
|
lua_State *NL = lua_newthread(L);
|
|
|
|
lua_swap(L);
|
|
|
|
lua_swap(L);
|
|
|
@ -1631,7 +1631,7 @@ void DFHack::Lua::Notification::bind(lua_State *state, const char *name)
|
|
|
|
void OpenDFHackApi(lua_State *state);
|
|
|
|
void OpenDFHackApi(lua_State *state);
|
|
|
|
|
|
|
|
|
|
|
|
namespace DFHack { namespace Lua { namespace Core {
|
|
|
|
namespace DFHack { namespace Lua { namespace Core {
|
|
|
|
static void InitCoreContext();
|
|
|
|
static void InitCoreContext(color_ostream &);
|
|
|
|
}}}
|
|
|
|
}}}
|
|
|
|
|
|
|
|
|
|
|
|
lua_State *DFHack::Lua::Open(color_ostream &out, lua_State *state)
|
|
|
|
lua_State *DFHack::Lua::Open(color_ostream &out, lua_State *state)
|
|
|
@ -1750,24 +1750,7 @@ lua_State *DFHack::Lua::Open(color_ostream &out, lua_State *state)
|
|
|
|
|
|
|
|
|
|
|
|
// Init core-context specific stuff before loading dfhack.lua
|
|
|
|
// Init core-context specific stuff before loading dfhack.lua
|
|
|
|
if (IsCoreContext(state))
|
|
|
|
if (IsCoreContext(state))
|
|
|
|
Lua::Core::InitCoreContext();
|
|
|
|
Lua::Core::InitCoreContext(out);
|
|
|
|
|
|
|
|
|
|
|
|
if (getenv("DFHACK_ENABLE_LUACOV"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// reads config from .luacov or uses defaults if file doesn't exist.
|
|
|
|
|
|
|
|
// note that luacov overrides the debug hook installed by
|
|
|
|
|
|
|
|
// interrupt_init() above.
|
|
|
|
|
|
|
|
if (PushModulePublic(out, state, "luacov.runner", "init") &&
|
|
|
|
|
|
|
|
SafeCall(out, state, 0, 0))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
out.print("Initialized luacov coverage monitoring\n");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
out.printerr("Failed to initialize luacov coverage monitoring\n");
|
|
|
|
|
|
|
|
// non-fatal error
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// load dfhack.lua
|
|
|
|
// load dfhack.lua
|
|
|
|
if (!Require(out, state, "dfhack"))
|
|
|
|
if (!Require(out, state, "dfhack"))
|
|
|
@ -1954,7 +1937,7 @@ bool DFHack::Lua::Core::Init(color_ostream &out)
|
|
|
|
return (Lua::Open(out, State) != NULL);
|
|
|
|
return (Lua::Open(out, State) != NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void Lua::Core::InitCoreContext()
|
|
|
|
static void Lua::Core::InitCoreContext(color_ostream &out)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
lua_newtable(State);
|
|
|
|
lua_newtable(State);
|
|
|
|
lua_rawsetp(State, LUA_REGISTRYINDEX, &DFHACK_TIMEOUTS_TOKEN);
|
|
|
|
lua_rawsetp(State, LUA_REGISTRYINDEX, &DFHACK_TIMEOUTS_TOKEN);
|
|
|
@ -1971,6 +1954,23 @@ static void Lua::Core::InitCoreContext()
|
|
|
|
lua_setfield(State, -2, "timeout_active");
|
|
|
|
lua_setfield(State, -2, "timeout_active");
|
|
|
|
|
|
|
|
|
|
|
|
lua_pop(State, 1);
|
|
|
|
lua_pop(State, 1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (getenv("DFHACK_ENABLE_LUACOV"))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// reads config from .luacov or uses defaults if file doesn't exist.
|
|
|
|
|
|
|
|
// note that luacov overrides the debug hook installed by
|
|
|
|
|
|
|
|
// interrupt_init() above.
|
|
|
|
|
|
|
|
if (Lua::PushModulePublic(out, State, "luacov.runner", "init") &&
|
|
|
|
|
|
|
|
Lua::SafeCall(out, State, 0, 0))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
out.print("Initialized luacov coverage monitoring\n");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
out.printerr("Failed to initialize luacov coverage monitoring\n");
|
|
|
|
|
|
|
|
// non-fatal error
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DFHack::Lua::Core::Reset(color_ostream &out, const char *where)
|
|
|
|
void DFHack::Lua::Core::Reset(color_ostream &out, const char *where)
|
|
|
|