TLS registry (#4554)
This commit is contained in:
committed by
Stanislav Erokhin
parent
09ebfc1b6f
commit
211c160558
@@ -31,6 +31,10 @@ ALWAYS_INLINE mm::ThreadRegistry::Node* FromMemoryState(MemoryState* state) {
|
||||
return reinterpret_cast<mm::ThreadRegistry::Node*>(state);
|
||||
}
|
||||
|
||||
ALWAYS_INLINE mm::ThreadData* GetThreadData(MemoryState* state) {
|
||||
return FromMemoryState(state)->Get();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
extern "C" MemoryState* InitMemory(bool firstRuntime) {
|
||||
@@ -55,3 +59,19 @@ extern "C" RUNTIME_NOTHROW void InitAndRegisterGlobal(ObjHeader** location, cons
|
||||
mm::GlobalsRegistry::Instance().RegisterStorageForGlobal(threadData, location);
|
||||
RuntimeCheck(false, "Unimplemented");
|
||||
}
|
||||
|
||||
extern "C" RUNTIME_NOTHROW void AddTLSRecord(MemoryState* memory, void** key, int size) {
|
||||
GetThreadData(memory)->tls().AddRecord(key, size);
|
||||
}
|
||||
|
||||
extern "C" RUNTIME_NOTHROW void CommitTLSStorage(MemoryState* memory) {
|
||||
GetThreadData(memory)->tls().Commit();
|
||||
}
|
||||
|
||||
extern "C" RUNTIME_NOTHROW void ClearTLS(MemoryState* memory) {
|
||||
GetThreadData(memory)->tls().Clear();
|
||||
}
|
||||
|
||||
extern "C" RUNTIME_NOTHROW ObjHeader** LookupTLS(void** key, int index) {
|
||||
return mm::ThreadRegistry::Instance().CurrentThreadData()->tls().Lookup(key, index);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user