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);
|
||||
mCeMachine = new CeMachine(this);
|
||||
mCurCEExecuteId = -1;
|
||||
mLastMidCompileRefreshRevision = -1;
|
||||
}
|
||||
|
||||
BfCompiler::~BfCompiler()
|
||||
|
|
|
@ -326,6 +326,7 @@ public:
|
|||
BfContext* mContext;
|
||||
BfCodeGen mCodeGen;
|
||||
String mOutputDirectory;
|
||||
int mLastMidCompileRefreshRevision;
|
||||
bool mCanceling;
|
||||
bool mHasRequiredTypes;
|
||||
bool mNeedsFullRefresh;
|
||||
|
|
|
@ -1197,7 +1197,18 @@ void BfContext::RebuildDependentTypes_MidCompile(BfDependedType* dType, const St
|
|||
dType->mRebuildFlags = (BfTypeRebuildFlags)(dType->mRebuildFlags | BfTypeRebuildFlag_ChangedMidCompile);
|
||||
int prevDeletedTypes = mCompiler->mStats.mTypesDeleted;
|
||||
if (mCompiler->mIsResolveOnly)
|
||||
{
|
||||
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());
|
||||
RebuildDependentTypes(dType);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue