1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Improved comptime rebuilds when files and directories change

This commit is contained in:
Brian Fiete 2021-12-29 10:07:36 -05:00
parent af8bd5a813
commit 915a8df50e
10 changed files with 236 additions and 70 deletions

View file

@ -1061,6 +1061,9 @@ void BfContext::RebuildType(BfType* type, bool deleteOnDemandTypes, bool rebuild
delete typeInst->mTypeInfoEx;
typeInst->mTypeInfoEx = NULL;
if (typeInst->mCeTypeInfo != NULL)
typeInst->mCeTypeInfo->mRebuildMap.Clear();
if (typeInst->mTypeDef->mEmitParent != NULL)
{
auto emitTypeDef = typeInst->mTypeDef;
@ -1895,9 +1898,11 @@ void BfContext::UpdateRevisedTypes()
Dictionary<String, uint64> lastWriteTimeMap;
bool rebuildAllFilesChanged = mCompiler->mRebuildChangedFileSet.Contains("*");
// Do primary 'rebuild' scan
for (auto type : mResolvedTypes)
{
{
auto typeInst = type->ToTypeInstance();
if (type == NULL)
{
@ -1958,6 +1963,14 @@ void BfContext::UpdateRevisedTypes()
}
if (*valuePtr != kv.mValue.mInt)
changed = true;
mCompiler->mRebuildFileSet.Add(kv.mKey.mString);
}
if ((kv.mKey.mKind == CeRebuildKey::Kind_File) || (kv.mKey.mKind == CeRebuildKey::Kind_Directory))
{
if ((rebuildAllFilesChanged) || (mCompiler->mRebuildChangedFileSet.Contains(kv.mKey.mString)))
changed = true;
mCompiler->mRebuildFileSet.Add(kv.mKey.mString);
}
}
@ -1984,20 +1997,15 @@ void BfContext::UpdateRevisedTypes()
continue;
}
// if ((mCompiler->mResolvePassData != NULL) && (mCompiler->mResolvePassData->mParser != NULL) && (!typeInst->IsSpecializedType()))
// {
// if (typeDef->HasSource(mCompiler->mResolvePassData->mParser))
// {
// HandleChangedTypeDef(typeDef);
// }
// }
if (typeDef->mDefState != BfTypeDef::DefState_New)
{
defStateChangedQueue.Add(typeInst);
}
}
// We consumed this above
mCompiler->mRebuildChangedFileSet.Clear();
for (auto typeInst : defStateChangedQueue)
{
BP_ZONE("BfContext::UpdateRevisedTypes defStateChangedQueue");