mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Fixed infinite emit refresh loop with non-deterministic emits
This commit is contained in:
parent
f3f2f4c6ec
commit
0de3a62e8b
3 changed files with 14 additions and 1 deletions
|
@ -482,6 +482,7 @@ BfCompiler::BfCompiler(BfSystem* bfSystem, bool isResolveOnly)
|
||||||
mContext = new BfContext(this);
|
mContext = new BfContext(this);
|
||||||
mCeMachine = new CeMachine(this);
|
mCeMachine = new CeMachine(this);
|
||||||
mCurCEExecuteId = -1;
|
mCurCEExecuteId = -1;
|
||||||
|
mLastMidCompileRefreshRevision = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
BfCompiler::~BfCompiler()
|
BfCompiler::~BfCompiler()
|
||||||
|
|
|
@ -326,6 +326,7 @@ public:
|
||||||
BfContext* mContext;
|
BfContext* mContext;
|
||||||
BfCodeGen mCodeGen;
|
BfCodeGen mCodeGen;
|
||||||
String mOutputDirectory;
|
String mOutputDirectory;
|
||||||
|
int mLastMidCompileRefreshRevision;
|
||||||
bool mCanceling;
|
bool mCanceling;
|
||||||
bool mHasRequiredTypes;
|
bool mHasRequiredTypes;
|
||||||
bool mNeedsFullRefresh;
|
bool mNeedsFullRefresh;
|
||||||
|
|
|
@ -1197,7 +1197,18 @@ void BfContext::RebuildDependentTypes_MidCompile(BfDependedType* dType, const St
|
||||||
dType->mRebuildFlags = (BfTypeRebuildFlags)(dType->mRebuildFlags | BfTypeRebuildFlag_ChangedMidCompile);
|
dType->mRebuildFlags = (BfTypeRebuildFlags)(dType->mRebuildFlags | BfTypeRebuildFlag_ChangedMidCompile);
|
||||||
int prevDeletedTypes = mCompiler->mStats.mTypesDeleted;
|
int prevDeletedTypes = mCompiler->mStats.mTypesDeleted;
|
||||||
if (mCompiler->mIsResolveOnly)
|
if (mCompiler->mIsResolveOnly)
|
||||||
mCompiler->mNeedsFullRefresh = true;
|
{
|
||||||
|
if (mCompiler->mLastMidCompileRefreshRevision == mCompiler->mRevision - 1)
|
||||||
|
{
|
||||||
|
// Don't repeatedly full refresh in the case of non-deterministic emits
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mCompiler->mNeedsFullRefresh = true;
|
||||||
|
mCompiler->mLastMidCompileRefreshRevision = mCompiler->mRevision;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
BfLogSysM("Rebuilding dependent types MidCompile Type:%p Reason:%s\n", dType, reason.c_str());
|
BfLogSysM("Rebuilding dependent types MidCompile Type:%p Reason:%s\n", dType, reason.c_str());
|
||||||
RebuildDependentTypes(dType);
|
RebuildDependentTypes(dType);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue