From d778f2dd2fb044fcbcb55f1e22fd2778f6ac06e5 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 6 Jan 2022 15:38:04 -0500 Subject: [PATCH 1/2] Fix for @-prefixed local variables --- IDEHelper/Compiler/BfModule.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 904ddc70..ceccb492 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -14480,6 +14480,12 @@ BfIRValue BfModule::AllocLocalVariable(BfType* type, const StringImpl& name, boo void BfModule::DoAddLocalVariable(BfLocalVariable* localVar) { + while (localVar->mName.StartsWith('@')) + { + localVar->mNamePrefixCount++; + localVar->mName.Remove(0); + } + localVar->mLocalVarIdx = (int)mCurMethodState->mLocals.size(); mCurMethodState->mLocals.push_back(localVar); From 6c3ae6f181a0acabdc50a4ba3c684cf66162de97 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 6 Jan 2022 16:50:08 -0500 Subject: [PATCH 2/2] Fix to GC capture priming --- BeefRT/dbg/gc.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/BeefRT/dbg/gc.cpp b/BeefRT/dbg/gc.cpp index e3f035b2..af720155 100644 --- a/BeefRT/dbg/gc.cpp +++ b/BeefRT/dbg/gc.cpp @@ -1387,17 +1387,7 @@ void BFGC::AdjustStackPtr(intptr& addr, int& size) bool BFGC::ScanThreads() { BP_ZONE("BFGC::ScanThreads"); - - if (mStackScanIdx == 0) - { - // 'Prime' register capture - intptr regVals[128]; - intptr stackPtr = 0; - BfpThreadResult threadResult; - int regValCount = 128; - BfpThread_GetIntRegisters(BfpThread_GetCurrent(), &stackPtr, regVals, ®ValCount, &threadResult); - } - + mUsingThreadUnlocked = true; BF_FULL_MEMORY_FENCE(); @@ -2403,6 +2393,16 @@ void BFGC::PerformCollection() { BP_ZONE("TriggerCollection"); + if (mCollectIdx == 0) + { + // 'Prime' register capture + intptr regVals[128]; + intptr stackPtr = 0; + BfpThreadResult threadResult; + int regValCount = 128; + BfpThread_GetIntRegisters(BfpThread_GetCurrent(), &stackPtr, regVals, ®ValCount, &threadResult); + } + int prevMarkId = mCurMarkId; DWORD startTick = BFTickCount();