[K/N] Optimize finalizing of simple extra objects

There is no need to delay ExtraObject deletion when it doesn't have
associated object. We can just remove it while iterating on them.
This commit is contained in:
Pavel Kunyavskiy
2021-11-02 12:01:10 +03:00
committed by Space
parent ff3abf9fc0
commit b22dec062c
9 changed files with 72 additions and 39 deletions
+5 -1
View File
@@ -82,7 +82,11 @@ MetaObjHeader* ObjHeader::createMetaObject(ObjHeader* object) {
// static
void ObjHeader::destroyMetaObject(ObjHeader* object) {
mm::ExtraObjectData::Uninstall(object);
RuntimeAssert(object->has_meta_object(), "Object must have a meta object set");
auto &extraObject = *mm::ExtraObjectData::Get(object);
extraObject.Uninstall();
auto *threadData = mm::ThreadRegistry::Instance().CurrentThreadData();
mm::ExtraObjectDataFactory::Instance().DestroyExtraObjectData(threadData, extraObject);
}
ALWAYS_INLINE bool isPermanentOrFrozen(const ObjHeader* obj) {