mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Clear cached ce reflection data during type rebuild
This commit is contained in:
parent
e071bd0014
commit
51713a1e34
3 changed files with 21 additions and 0 deletions
|
@ -1009,6 +1009,9 @@ void BfContext::RebuildType(BfType* type, bool deleteOnDemandTypes, bool rebuild
|
|||
return;
|
||||
}
|
||||
|
||||
if (mCompiler->mCeMachine != NULL)
|
||||
mCompiler->mCeMachine->ClearTypeData(typeInst);
|
||||
|
||||
BF_ASSERT_REL(typeInst->mDefineState != BfTypeDefineState_DefinedAndMethodsSlotting);
|
||||
|
||||
// We need to verify lookups before we rebuild the type, because a type lookup change needs to count as a TypeDataChanged
|
||||
|
|
|
@ -9759,6 +9759,23 @@ void CeMachine::QueueStaticField(BfFieldInstance* fieldInstance, const StringImp
|
|||
mCurBuilder->mStaticFieldInstanceMap[mangledFieldName] = fieldInstance;
|
||||
}
|
||||
|
||||
void CeMachine::ClearTypeData(BfTypeInstance* typeInstance)
|
||||
{
|
||||
if (mTypeInfoMap.Remove(typeInstance))
|
||||
{
|
||||
for (auto& methodGroup : typeInstance->mMethodInstanceGroups)
|
||||
{
|
||||
if (methodGroup.mDefault != NULL)
|
||||
mMethodInstanceSet.Remove(methodGroup.mDefault);
|
||||
if (methodGroup.mMethodSpecializationMap != NULL)
|
||||
{
|
||||
for (auto& kv : *methodGroup.mMethodSpecializationMap)
|
||||
mMethodInstanceSet.Remove(kv.mValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CeMachine::SetAppendAllocInfo(BfModule* module, BfIRValue allocValue, BfIRValue appendSizeValue)
|
||||
{
|
||||
delete mAppendAllocInfo;
|
||||
|
|
|
@ -1257,6 +1257,7 @@ public:
|
|||
CeFunction* QueueMethod(BfMethodInstance* methodInstance, BfIRValue func);
|
||||
void QueueMethod(BfModuleMethodInstance moduleMethodInstance);
|
||||
void QueueStaticField(BfFieldInstance* fieldInstance, const StringImpl& mangledFieldName);
|
||||
void ClearTypeData(BfTypeInstance* typeInstance);
|
||||
|
||||
void SetAppendAllocInfo(BfModule* module, BfIRValue allocValue, BfIRValue appendSizeValue);
|
||||
void ClearAppendAllocInfo();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue