mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Improved stepping with deferred call processor
This commit is contained in:
parent
acb644830c
commit
e6cbf0509b
1 changed files with 5 additions and 3 deletions
|
@ -849,6 +849,8 @@ void BfModule::EmitDeferredCall(BfScopeData* scopeData, BfDeferredCallEntry& def
|
||||||
|
|
||||||
mBfIRBuilder->AddBlock(deferredProcessor.mContinueBlock);
|
mBfIRBuilder->AddBlock(deferredProcessor.mContinueBlock);
|
||||||
mBfIRBuilder->SetInsertPoint(deferredProcessor.mContinueBlock);
|
mBfIRBuilder->SetInsertPoint(deferredProcessor.mContinueBlock);
|
||||||
|
SetIllegalSrcPos();
|
||||||
|
EmitEnsureInstructionAt();
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -5387,7 +5389,7 @@ void BfModule::Visit(BfBreakStatement* breakStmt)
|
||||||
bool inMixinDecl = (mCurMethodInstance != NULL) && (mCurMethodInstance->IsMixin());
|
bool inMixinDecl = (mCurMethodInstance != NULL) && (mCurMethodInstance->IsMixin());
|
||||||
|
|
||||||
UpdateSrcPos(breakStmt);
|
UpdateSrcPos(breakStmt);
|
||||||
mBfIRBuilder->CreateEnsureInstructionAt();
|
EmitEnsureInstructionAt();
|
||||||
|
|
||||||
BfBreakData* breakData = mCurMethodState->mBreakData;
|
BfBreakData* breakData = mCurMethodState->mBreakData;
|
||||||
if (breakStmt->mLabel != NULL)
|
if (breakStmt->mLabel != NULL)
|
||||||
|
@ -5503,7 +5505,7 @@ void BfModule::Visit(BfContinueStatement* continueStmt)
|
||||||
bool inMixinDecl = (mCurMethodInstance != NULL) && (mCurMethodInstance->IsMixin());
|
bool inMixinDecl = (mCurMethodInstance != NULL) && (mCurMethodInstance->IsMixin());
|
||||||
|
|
||||||
UpdateSrcPos(continueStmt);
|
UpdateSrcPos(continueStmt);
|
||||||
mBfIRBuilder->CreateEnsureInstructionAt();
|
EmitEnsureInstructionAt();
|
||||||
|
|
||||||
// If we're in a switch, 'break' is valid but we need to continue looking outward for a 'continue' target
|
// If we're in a switch, 'break' is valid but we need to continue looking outward for a 'continue' target
|
||||||
BfBreakData* breakData = mCurMethodState->mBreakData;
|
BfBreakData* breakData = mCurMethodState->mBreakData;
|
||||||
|
@ -5904,7 +5906,7 @@ void BfModule::Visit(BfWhileStatement* whileStmt)
|
||||||
|
|
||||||
if (checkVal.mValue.IsConst())
|
if (checkVal.mValue.IsConst())
|
||||||
{
|
{
|
||||||
mBfIRBuilder->CreateEnsureInstructionAt();
|
EmitEnsureInstructionAt();
|
||||||
|
|
||||||
auto constVal = mBfIRBuilder->GetConstantById(checkVal.mValue.mId);
|
auto constVal = mBfIRBuilder->GetConstantById(checkVal.mValue.mId);
|
||||||
if (constVal->mTypeCode == BfTypeCode_Boolean)
|
if (constVal->mTypeCode == BfTypeCode_Boolean)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue