From e6cbf0509b62df484fa5d0da0cdf0bed9b156293 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 24 Aug 2022 15:44:19 -0700 Subject: [PATCH] Improved stepping with deferred call processor --- IDEHelper/Compiler/BfStmtEvaluator.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index 167a3901..5e5f4970 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -849,6 +849,8 @@ void BfModule::EmitDeferredCall(BfScopeData* scopeData, BfDeferredCallEntry& def mBfIRBuilder->AddBlock(deferredProcessor.mContinueBlock); mBfIRBuilder->SetInsertPoint(deferredProcessor.mContinueBlock); + SetIllegalSrcPos(); + EmitEnsureInstructionAt(); } return; @@ -5387,7 +5389,7 @@ void BfModule::Visit(BfBreakStatement* breakStmt) bool inMixinDecl = (mCurMethodInstance != NULL) && (mCurMethodInstance->IsMixin()); UpdateSrcPos(breakStmt); - mBfIRBuilder->CreateEnsureInstructionAt(); + EmitEnsureInstructionAt(); BfBreakData* breakData = mCurMethodState->mBreakData; if (breakStmt->mLabel != NULL) @@ -5503,7 +5505,7 @@ void BfModule::Visit(BfContinueStatement* continueStmt) bool inMixinDecl = (mCurMethodInstance != NULL) && (mCurMethodInstance->IsMixin()); 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 BfBreakData* breakData = mCurMethodState->mBreakData; @@ -5904,7 +5906,7 @@ void BfModule::Visit(BfWhileStatement* whileStmt) if (checkVal.mValue.IsConst()) { - mBfIRBuilder->CreateEnsureInstructionAt(); + EmitEnsureInstructionAt(); auto constVal = mBfIRBuilder->GetConstantById(checkVal.mValue.mId); if (constVal->mTypeCode == BfTypeCode_Boolean)