From 0b47f755d857366304cf8f42199c3fa0be0221f8 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 25 Jan 2022 12:05:15 -0500 Subject: [PATCH] Fixes to raw array delete marking --- IDEHelper/Compiler/BfModule.cpp | 2 +- IDEHelper/Compiler/BfModule.h | 3 ++- IDEHelper/Compiler/BfStmtEvaluator.cpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index b14c492c..a1846e81 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -9108,7 +9108,7 @@ BfIRValue BfModule::AllocFromType(BfType* type, const BfAllocTarget& allocTarget for (int i = 1; i < deferredCall->mModuleMethodInstance.mMethodInstance->GetParamCount(); i++) { auto scopedArg = deferredCall->mScopeArgs[i]; - if (!scopedArg.IsConst()) + if (scopedArg != deferredCall->mOrigScopeArgs[i]) mBfIRBuilder->CreateStore(GetDefaultValue(deferredCall->mModuleMethodInstance.mMethodInstance->GetParamType(i)), deferredCall->mScopeArgs[i]); } } diff --git a/IDEHelper/Compiler/BfModule.h b/IDEHelper/Compiler/BfModule.h index f32de4e4..77ff9ea6 100644 --- a/IDEHelper/Compiler/BfModule.h +++ b/IDEHelper/Compiler/BfModule.h @@ -282,7 +282,8 @@ public: BfTypedValue mTarget; BfModuleMethodInstance mModuleMethodInstance; BfIRValue mDeferredAlloca; - SizedArray mScopeArgs; + SizedArray mOrigScopeArgs; + SizedArray mScopeArgs; Array mCaptures; BfBlock* mDeferredBlock; BfAstNode* mEmitRefNode; diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index 618b022a..8d042c86 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -64,6 +64,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc if (mCurMethodState->mPendingNullConditional != NULL) isDyn = true; + deferredCallEntry->mOrigScopeArgs = deferredCallEntry->mScopeArgs; + if (!isDyn) { mCurMethodState->mCurScope->ClearHandlers(scopeData);