From 411aa393f2125dbd12e33832e0193fd3025a9c00 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 15 Jul 2025 00:03:36 +0000 Subject: [PATCH 1/2] Move MethodContextReader to use the minipal mutex --- .../superpmi-shared/methodcontextreader.cpp | 13 ++++++------- .../superpmi/superpmi-shared/methodcontextreader.h | 3 ++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp b/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp index 529d8260b675c2..26656170091ad3 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp @@ -94,7 +94,7 @@ MethodContextReader::MethodContextReader( , Offset(offset) , Increment(increment) { - this->mutex = CreateMutexW(NULL, FALSE, nullptr); + minipal_mutex_init(&this->mutex); std::string tocFileName, mchFileName; @@ -140,20 +140,19 @@ MethodContextReader::~MethodContextReader() CloseHandle(this->fileHandle); } - CloseHandle(this->mutex); - + minipal_mutex_destroy(&this->mutex); CleanExcludedMethods(); } bool MethodContextReader::AcquireLock() { - DWORD res = WaitForSingleObject(this->mutex, INFINITE); - return (res == WAIT_OBJECT_0); + minipal_mutex_enter(&this->mutex); + return true; } void MethodContextReader::ReleaseLock() { - ReleaseMutex(this->mutex); + minipal_mutex_leave(&this->mutex); } bool MethodContextReader::atEof() @@ -640,7 +639,7 @@ void MethodContextReader::Reset(const int* newIndexes, int newIndexCount) int64_t pos = 0; BOOL result = SetFilePointerEx(fileHandle, *(PLARGE_INTEGER)&pos, NULL, FILE_BEGIN); assert(result); - + Indexes = newIndexes; IndexCount = newIndexCount; curIndexPos = 0; diff --git a/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.h b/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.h index df3ca7b31653f8..f5ef48009b8370 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.h +++ b/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.h @@ -10,6 +10,7 @@ #include "methodcontext.h" #include "tocfile.h" +#include struct MethodContextBuffer { @@ -56,7 +57,7 @@ class MethodContextReader int curMCIndex; // The synchronization mutex - HANDLE mutex; + minipal_mutex mutex; bool AcquireLock(); void ReleaseLock(); From f2125cc586afdf27dfeb6fbb1e99ec33a8bfa28a Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Tue, 15 Jul 2025 15:29:25 -0700 Subject: [PATCH 2/2] Add change that got lost --- .../tools/superpmi/superpmi-shared/methodcontextreader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp b/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp index 26656170091ad3..3165ac8ab73436 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shared/methodcontextreader.cpp @@ -417,7 +417,7 @@ bool MethodContextReader::hasTOC() bool MethodContextReader::isValid() { - return this->fileHandle != INVALID_HANDLE_VALUE && this->mutex != INVALID_HANDLE_VALUE; + return this->fileHandle != INVALID_HANDLE_VALUE; } // Return a measure of "progress" through the method contexts, as follows: