From 6ba8003fcd4441c60b2dfac3e07229cd1e73327e Mon Sep 17 00:00:00 2001 From: Juan Sebastian Hoyos Ayala Date: Wed, 22 Apr 2026 15:27:25 -0700 Subject: [PATCH 1/2] Report code size after segments have been commited --- src/coreclr/vm/codeman.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/coreclr/vm/codeman.cpp b/src/coreclr/vm/codeman.cpp index 5ba8d32028e0ef..78391a593cc4be 100644 --- a/src/coreclr/vm/codeman.cpp +++ b/src/coreclr/vm/codeman.cpp @@ -2213,7 +2213,6 @@ TaggedMemAllocPtr CodeFragmentHeap::RealAllocAlignedMem(size_t dwRequestedSize if (dwSize < SMALL_BLOCK_THRESHOLD) dwSize = 4 * SMALL_BLOCK_THRESHOLD; pMem = ExecutionManager::GetEEJitManager()->AllocCodeFragmentBlock(dwSize, dwAlignment, m_pAllocator, m_kind); - ReportStubBlock(pMem, dwSize, m_kind); } SIZE_T dwExtra = (BYTE *)ALIGN_UP(pMem, dwAlignment) - (BYTE *)pMem; @@ -2227,6 +2226,8 @@ TaggedMemAllocPtr CodeFragmentHeap::RealAllocAlignedMem(size_t dwRequestedSize dwSize -= dwRemaining; } + ReportStubBlock(pMem, dwSize, m_kind); + TaggedMemAllocPtr tmap; tmap.m_pMem = pMem; tmap.m_dwRequestedSize = dwSize; From f6bf6748043f0cc5fdb860fa62e4f23ecec515db Mon Sep 17 00:00:00 2001 From: Juan Sebastian Hoyos Ayala Date: Wed, 22 Apr 2026 16:19:14 -0700 Subject: [PATCH 2/2] Get unique name for stub fix --- src/coreclr/vm/perfmap.cpp | 4 ++-- src/coreclr/vm/perfmap.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/coreclr/vm/perfmap.cpp b/src/coreclr/vm/perfmap.cpp index d51c75dbe35f01..72998b7919cc1d 100644 --- a/src/coreclr/vm/perfmap.cpp +++ b/src/coreclr/vm/perfmap.cpp @@ -34,7 +34,7 @@ bool PerfMap::s_ShowOptimizationTiers = false; bool PerfMap::s_GroupStubsOfSameType = false; bool PerfMap::s_IndividualAllocationStubReporting = false; -unsigned PerfMap::s_StubsMapped = 0; +volatile LONG PerfMap::s_StubsMapped = 0; CrstStatic PerfMap::s_csPerfMap; bool PerfMapLowGranularityStubs() @@ -437,7 +437,7 @@ void PerfMap::LogStubs(const char* stubType, const char* stubOwner, PCODE pCode, } else { - name.Printf("stub<%d> %s<%s>", ++(s_StubsMapped), stubType, stubOwner); + name.Printf("stub<%d> %s<%s>", InterlockedIncrement(&s_StubsMapped), stubType, stubOwner); } SString line; line.Printf(FMT_CODE_ADDR " %x %s\n", pCode, codeSize, name.GetUTF8()); diff --git a/src/coreclr/vm/perfmap.h b/src/coreclr/vm/perfmap.h index 4dc23f65e107db..71e43756ec3fab 100644 --- a/src/coreclr/vm/perfmap.h +++ b/src/coreclr/vm/perfmap.h @@ -37,8 +37,8 @@ class PerfMap static bool s_GroupStubsOfSameType; static bool s_IndividualAllocationStubReporting; - // Set to true if an error is encountered when writing to the file. - static unsigned s_StubsMapped; + // Counter for generating unique stub names when s_GroupStubsOfSameType is false. + static volatile LONG s_StubsMapped; static CrstStatic s_csPerfMap;