From 49a4536e1e7d2c0f36959463c3fbc737a0f23c78 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 20 Oct 2020 07:30:25 -0700 Subject: [PATCH] Fixed chained GCMarkMember --- IDEHelper/Compiler/BfModule.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index cf384c73..7dd1ab8d 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -4902,11 +4902,6 @@ BfIRValue BfModule::CreateTypeData(BfType* type, Dictionary& usedStrin BfMangler::Mangle(typeDataName, mCompiler->GetMangleKind(), type, mContext->mScratchModule); } - if (typeDataName == "sBfTypeData.?") - { - NOP; - } - int typeCode = BfTypeCode_None; if (typeInstance != NULL) @@ -21626,6 +21621,11 @@ bool BfModule::SlotVirtualMethod(BfMethodInstance* methodInstance, BfAmbiguityCo if (mCurTypeInstance->IsUnspecializedTypeVariation()) return false; + if ((mCurTypeInstance->mTypeDef->mName->ToString() == "Zornk") && (methodInstance->mMethodDef->mName == "GCMarkMembers")) + { + NOP; + } + auto _AddVirtualDecl = [&](BfMethodInstance* declMethodInstance) { if (!mCompiler->mOptions.mAllowHotSwapping) @@ -21985,6 +21985,16 @@ bool BfModule::SlotVirtualMethod(BfMethodInstance* methodInstance, BfAmbiguityCo ambiguityContext->Remove(virtualMethodMatchIdx); } + if ((isBetter) && (methodInstance->GetOwner() == methodOverriden->GetOwner())) + { + if (methodDef->mName == BF_METHODNAME_MARKMEMBERS) + { + // Leave the master GCMarkMember + isBetter = false; + isWorse = true; + } + } + doOverride = isBetter; } }