summaryrefslogtreecommitdiff
path: root/source/3rd-party/Luax/luax_vm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/3rd-party/Luax/luax_vm.cpp')
-rw-r--r--source/3rd-party/Luax/luax_vm.cpp32
1 files changed, 14 insertions, 18 deletions
diff --git a/source/3rd-party/Luax/luax_vm.cpp b/source/3rd-party/Luax/luax_vm.cpp
index 549e20b..5e9d1f5 100644
--- a/source/3rd-party/Luax/luax_vm.cpp
+++ b/source/3rd-party/Luax/luax_vm.cpp
@@ -1,32 +1,39 @@
+#include "luax_internal.h"
#include "luax_vm.h"
namespace Luax
{
- LuaxVM::ThreadMap threadMap; // ̲ͨ߳Ϊ˷
+ LuaxVM::VMap LuaxVM::VMs; // ̲ͨ߳Ϊ˷
- LuaxVM* LuaxVM::TryGetVM(lua_State* L)
+ LuaxVM* LuaxVM::TryGetVM(global_State* gState)
{
- auto it = threadMap.find(L);
- if (it != threadMap.end())
+ auto it = VMs.find(gState);
+ if (it != VMs.end())
return it->second;
else
return nullptr;
}
+ LuaxVM* LuaxVM::TryGetVM(lua_State* state)
+ {
+ return TryGetVM(G(state));
+ }
+
LuaxVM::LuaxVM()
: mStrongRefTable()
, mWeakRefTable()
{
mMainThread = luaL_newstate();
assert(mMainThread);
- mThreads.insert(mMainThread);
+ mGlobalState = G(mMainThread);
- threadMap.insert(std::pair<lua_State*, LuaxVM*>(mMainThread, this));
+ VMs.insert(std::pair<global_State*, LuaxVM*>(mGlobalState, this));
}
LuaxVM::~LuaxVM()
{
+ VMs.erase(mGlobalState);
lua_close(mMainThread);
}
@@ -34,7 +41,7 @@ namespace Luax
void LuaxVM::Setup()
{
LUAX_STATE(mMainThread);
- // ȫñ
+
mStrongRefTable.Init(state, "_LUAX_STRONGREF_TABLE");
mWeakRefTable.Init(state, "_LUAX_WEAKREF_TABLE", "v");
}
@@ -43,7 +50,6 @@ namespace Luax
{
lua_State* thread = lua_newthread(mMainThread);
assert(thread);
- mThreads.insert(thread);
return thread;
}
@@ -62,14 +68,4 @@ namespace Luax
return mWeakRefTable;
}
- bool LuaxVM::HasThread(lua_State* L)
- {
- return mThreads.find(L) != mThreads.end();
- }
-
- int LuaxVM::GetThreadCount()
- {
- return mThreads.size();
- }
-
} \ No newline at end of file