From 6c3ae6f181a0acabdc50a4ba3c684cf66162de97 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 6 Jan 2022 16:50:08 -0500 Subject: [PATCH] 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();