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:
parent
af8bd5a813
commit
915a8df50e
10 changed files with 236 additions and 70 deletions
|
@ -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");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue