mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Fixed split deferred call processor
This commit is contained in:
parent
e09b701e9f
commit
acb644830c
6 changed files with 97 additions and 8 deletions
|
@ -2006,9 +2006,12 @@ void BfModule::RestoreScopeState()
|
|||
}
|
||||
}
|
||||
|
||||
mCurMethodState->mCurScope->mDone = true;
|
||||
if (!mCurMethodState->mLeftBlockUncond)
|
||||
EmitDeferredScopeCalls(true, mCurMethodState->mCurScope);
|
||||
|
||||
EmitDeferredCallProcessorInstances(mCurMethodState->mCurScope);
|
||||
|
||||
RestoreScoreState_LocalVariables();
|
||||
|
||||
if (mCurMethodState->mCurScope->mValueScopeStart)
|
||||
|
@ -16017,7 +16020,7 @@ void BfModule::EmitDeferredScopeCalls(bool useSrcPositions, BfScopeData* scopeDa
|
|||
}
|
||||
|
||||
auto prevHead = checkScope->mDeferredCallEntries.mHead;
|
||||
EmitDeferredCall(*deferredCallEntry, true);
|
||||
EmitDeferredCall(checkScope, *deferredCallEntry, true);
|
||||
if (prevHead != checkScope->mDeferredCallEntries.mHead)
|
||||
{
|
||||
// The list changed, start over and ignore anything we've already handled
|
||||
|
@ -16028,7 +16031,7 @@ void BfModule::EmitDeferredScopeCalls(bool useSrcPositions, BfScopeData* scopeDa
|
|||
}
|
||||
else
|
||||
{
|
||||
EmitDeferredCall(*deferredCallEntry, true);
|
||||
EmitDeferredCall(checkScope, *deferredCallEntry, true);
|
||||
deferredCallEntry = deferredCallEntry->mNext;
|
||||
}
|
||||
}
|
||||
|
@ -21819,12 +21822,15 @@ void BfModule::ProcessMethod(BfMethodInstance* methodInstance, bool isInlineDup,
|
|||
AssertErrorState();
|
||||
}
|
||||
|
||||
mCurMethodState->mHeadScope.mDone = true;
|
||||
if (!mCurMethodState->mHadReturn)
|
||||
{
|
||||
// Clear off the stackallocs that have occurred after a scopeData break
|
||||
EmitDeferredScopeCalls(false, &mCurMethodState->mHeadScope, mCurMethodState->mIRExitBlock);
|
||||
}
|
||||
|
||||
EmitDeferredCallProcessorInstances(&mCurMethodState->mHeadScope);
|
||||
|
||||
if (mCurMethodState->mIRExitBlock)
|
||||
{
|
||||
for (auto preExitBlock : mCurMethodState->mHeadScope.mAtEndBlocks)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue