mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed chained GCMarkMember
This commit is contained in:
parent
affd740ff4
commit
49a4536e1e
1 changed files with 15 additions and 5 deletions
|
@ -4902,11 +4902,6 @@ BfIRValue BfModule::CreateTypeData(BfType* type, Dictionary<int, int>& usedStrin
|
||||||
BfMangler::Mangle(typeDataName, mCompiler->GetMangleKind(), type, mContext->mScratchModule);
|
BfMangler::Mangle(typeDataName, mCompiler->GetMangleKind(), type, mContext->mScratchModule);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeDataName == "sBfTypeData.?")
|
|
||||||
{
|
|
||||||
NOP;
|
|
||||||
}
|
|
||||||
|
|
||||||
int typeCode = BfTypeCode_None;
|
int typeCode = BfTypeCode_None;
|
||||||
|
|
||||||
if (typeInstance != NULL)
|
if (typeInstance != NULL)
|
||||||
|
@ -21626,6 +21621,11 @@ bool BfModule::SlotVirtualMethod(BfMethodInstance* methodInstance, BfAmbiguityCo
|
||||||
if (mCurTypeInstance->IsUnspecializedTypeVariation())
|
if (mCurTypeInstance->IsUnspecializedTypeVariation())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if ((mCurTypeInstance->mTypeDef->mName->ToString() == "Zornk") && (methodInstance->mMethodDef->mName == "GCMarkMembers"))
|
||||||
|
{
|
||||||
|
NOP;
|
||||||
|
}
|
||||||
|
|
||||||
auto _AddVirtualDecl = [&](BfMethodInstance* declMethodInstance)
|
auto _AddVirtualDecl = [&](BfMethodInstance* declMethodInstance)
|
||||||
{
|
{
|
||||||
if (!mCompiler->mOptions.mAllowHotSwapping)
|
if (!mCompiler->mOptions.mAllowHotSwapping)
|
||||||
|
@ -21985,6 +21985,16 @@ bool BfModule::SlotVirtualMethod(BfMethodInstance* methodInstance, BfAmbiguityCo
|
||||||
ambiguityContext->Remove(virtualMethodMatchIdx);
|
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;
|
doOverride = isBetter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue