[K/N][New MM] Move MemoryState conversions to separate header

This commit is contained in:
Ilya Matveev
2021-02-28 14:12:04 +07:00
committed by TeamCityServer
parent da6440c59e
commit fc43fbf578
2 changed files with 49 additions and 25 deletions
+7 -25
View File
@@ -4,6 +4,7 @@
*/
#include "Memory.h"
#include "MemoryPrivate.hpp"
#include "Exceptions.h"
#include "ExtraObjectData.hpp"
@@ -20,13 +21,6 @@
using namespace kotlin;
// Delete all means of creating this type directly as it only serves
// as a typedef for `mm::ThreadRegistry::Node`.
extern "C" struct MemoryState : Pinned {
MemoryState() = delete;
~MemoryState() = delete;
};
// TODO: This name does not make sense anymore.
// Delete all means of creating this type directly as it only serves
// as a typedef for `mm::StableRefRegistry::Node`.
@@ -40,14 +34,6 @@ namespace {
// `reinterpret_cast` to it and back to the same type
// will yield precisely the same pointer, so it's safe.
ALWAYS_INLINE MemoryState* ToMemoryState(mm::ThreadRegistry::Node* data) {
return reinterpret_cast<MemoryState*>(data);
}
ALWAYS_INLINE mm::ThreadRegistry::Node* FromMemoryState(MemoryState* state) {
return reinterpret_cast<mm::ThreadRegistry::Node*>(state);
}
ALWAYS_INLINE ForeignRefManager* ToForeignRefManager(mm::StableRefRegistry::Node* data) {
return reinterpret_cast<ForeignRefManager*>(data);
}
@@ -56,10 +42,6 @@ ALWAYS_INLINE mm::StableRefRegistry::Node* FromForeignRefManager(ForeignRefManag
return reinterpret_cast<mm::StableRefRegistry::Node*>(manager);
}
ALWAYS_INLINE mm::ThreadData* GetThreadData(MemoryState* state) {
return FromMemoryState(state)->Get();
}
} // namespace
ObjHeader** ObjHeader::GetWeakCounterLocation() {
@@ -105,11 +87,11 @@ ALWAYS_INLINE bool isShareable(const ObjHeader* obj) {
}
extern "C" MemoryState* InitMemory(bool firstRuntime) {
return ToMemoryState(mm::ThreadRegistry::Instance().RegisterCurrentThread());
return mm::ToMemoryState(mm::ThreadRegistry::Instance().RegisterCurrentThread());
}
extern "C" void DeinitMemory(MemoryState* state, bool destroyRuntime) {
mm::ThreadRegistry::Instance().Unregister(FromMemoryState(state));
mm::ThreadRegistry::Instance().Unregister(mm::FromMemoryState(state));
}
extern "C" void RestoreMemory(MemoryState*) {
@@ -233,15 +215,15 @@ extern "C" RUNTIME_NOTHROW void LeaveFrame(ObjHeader** start, int parameters, in
}
extern "C" RUNTIME_NOTHROW void AddTLSRecord(MemoryState* memory, void** key, int size) {
GetThreadData(memory)->tls().AddRecord(key, size);
memory->GetThreadData()->tls().AddRecord(key, size);
}
extern "C" RUNTIME_NOTHROW void CommitTLSStorage(MemoryState* memory) {
GetThreadData(memory)->tls().Commit();
memory->GetThreadData()->tls().Commit();
}
extern "C" RUNTIME_NOTHROW void ClearTLS(MemoryState* memory) {
GetThreadData(memory)->tls().Clear();
memory->GetThreadData()->tls().Clear();
}
extern "C" RUNTIME_NOTHROW ObjHeader** LookupTLS(void** key, int index) {
@@ -347,7 +329,7 @@ extern "C" void Kotlin_Any_share(ObjHeader* thiz) {
}
extern "C" RUNTIME_NOTHROW void PerformFullGC(MemoryState* memory) {
GetThreadData(memory)->gc().PerformFullGC();
memory->GetThreadData()->gc().PerformFullGC();
}
extern "C" RUNTIME_NOTHROW bool ClearSubgraphReferences(ObjHeader* root, bool checked) {