Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
88ddef8
[release/8.0-staging] Deny unmasked frame receive for WebSocket Serve…
liveans Mar 13, 2026
6ec5019
[release/8.0-staging] Update dependencies from dotnet/runtime-assets …
dotnet-maestro[bot] Mar 16, 2026
18a28bc
[release/8.0-staging] Update dependencies from dotnet/icu (#125095)
dotnet-maestro[bot] Mar 16, 2026
6a6a880
Merge branch 'release/8.0-staging' into merge/release/8.0-to-release/…
akoeplinger Mar 23, 2026
bb39ada
[automated] Merge branch 'release/8.0' => 'release/8.0-staging' (#124…
akoeplinger Mar 24, 2026
a6958c8
[release/8.0-staging] use AZL3 instead of Ubuntu for builds (#125544)
wfurt Mar 24, 2026
07260fe
[release/8.0] Partial backport #118329 - disable and modify Android t…
matouskozak Mar 24, 2026
e9d80d2
[release/8.0-staging] JIT: fix bug in loop cloning with down-counting…
github-actions[bot] Apr 15, 2026
7b26368
[release/8.0-staging] Update dependencies from dotnet/xharness (#126322)
dotnet-maestro[bot] Apr 16, 2026
7ae5c89
[release/8.0-staging] [QUIC] Update MsQuic (#127000)
ManickaP Apr 16, 2026
1bde365
Use source-build-assets repo (#126792)
NikolaMilosavljevic Apr 23, 2026
c686176
[release/8.0-staging] Update dependencies from dotnet/arcade (#125023)
dotnet-maestro[bot] May 5, 2026
8eda600
[release/8.0-staging] Add an in-memory cache for CRLs on Linux
bartonjs May 5, 2026
139a35c
[release/8.0-staging] Update dependencies from dotnet/hotreload-utils…
dotnet-maestro[bot] May 7, 2026
a5995cd
[release/8.0] Port dump collection perf improvements (#128022)
hoyosjs May 13, 2026
50fbd88
Merge remote-tracking branch 'origin/release/8.0' into merge/release/…
hoyosjs May 13, 2026
b640264
[release/8.0-staging] Update dependencies from dotnet/icu (#125704)
dotnet-maestro[bot] May 13, 2026
cd0e9c0
[automated] Merge branch 'release/8.0' => 'release/8.0-staging' (#126…
hoyosjs May 13, 2026
9b4cc2d
[release/8.0][browser] Disable debugger tests on CI (#108178) (#128133)
akoeplinger May 14, 2026
7e0ea85
[release/8.0] Disable crypto.xml package generation (#128213)
hoyosjs May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
]
},
"microsoft.dotnet.xharness.cli": {
"version": "8.0.0-prerelease.25516.2",
"version": "11.0.0-prerelease.26180.1",
"commands": [
"xharness"
]
Expand Down
157 changes: 79 additions & 78 deletions eng/Version.Details.xml

Large diffs are not rendered by default.

68 changes: 34 additions & 34 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -88,21 +88,21 @@
<!-- SDK dependencies -->
<MicrosoftDotNetApiCompatTaskVersion>8.0.100</MicrosoftDotNetApiCompatTaskVersion>
<!-- Arcade dependencies -->
<MicrosoftDotNetBuildTasksFeedVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksFeedVersion>
<MicrosoftDotNetCodeAnalysisVersion>8.0.0-beta.26112.1</MicrosoftDotNetCodeAnalysisVersion>
<MicrosoftDotNetGenAPIVersion>8.0.0-beta.26112.1</MicrosoftDotNetGenAPIVersion>
<MicrosoftDotNetGenFacadesVersion>8.0.0-beta.26112.1</MicrosoftDotNetGenFacadesVersion>
<MicrosoftDotNetXUnitExtensionsVersion>8.0.0-beta.26112.1</MicrosoftDotNetXUnitExtensionsVersion>
<MicrosoftDotNetXUnitConsoleRunnerVersion>2.5.1-beta.26112.1</MicrosoftDotNetXUnitConsoleRunnerVersion>
<MicrosoftDotNetBuildTasksArchivesVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksArchivesVersion>
<MicrosoftDotNetBuildTasksInstallersVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksInstallersVersion>
<MicrosoftDotNetBuildTasksPackagingVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksPackagingVersion>
<MicrosoftDotNetBuildTasksTargetFrameworkVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksTargetFrameworkVersion>
<MicrosoftDotNetBuildTasksTemplatingVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksTemplatingVersion>
<MicrosoftDotNetBuildTasksWorkloadsPackageVersion>8.0.0-beta.26112.1</MicrosoftDotNetBuildTasksWorkloadsPackageVersion>
<MicrosoftDotNetRemoteExecutorVersion>8.0.0-beta.26112.1</MicrosoftDotNetRemoteExecutorVersion>
<MicrosoftDotNetVersionToolsTasksVersion>8.0.0-beta.26112.1</MicrosoftDotNetVersionToolsTasksVersion>
<MicrosoftDotNetPackageTestingVersion>8.0.0-beta.26112.1</MicrosoftDotNetPackageTestingVersion>
<MicrosoftDotNetBuildTasksFeedVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksFeedVersion>
<MicrosoftDotNetCodeAnalysisVersion>8.0.0-beta.26224.3</MicrosoftDotNetCodeAnalysisVersion>
<MicrosoftDotNetGenAPIVersion>8.0.0-beta.26224.3</MicrosoftDotNetGenAPIVersion>
<MicrosoftDotNetGenFacadesVersion>8.0.0-beta.26224.3</MicrosoftDotNetGenFacadesVersion>
<MicrosoftDotNetXUnitExtensionsVersion>8.0.0-beta.26224.3</MicrosoftDotNetXUnitExtensionsVersion>
<MicrosoftDotNetXUnitConsoleRunnerVersion>2.5.1-beta.26224.3</MicrosoftDotNetXUnitConsoleRunnerVersion>
<MicrosoftDotNetBuildTasksArchivesVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksArchivesVersion>
<MicrosoftDotNetBuildTasksInstallersVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksInstallersVersion>
<MicrosoftDotNetBuildTasksPackagingVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksPackagingVersion>
<MicrosoftDotNetBuildTasksTargetFrameworkVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksTargetFrameworkVersion>
<MicrosoftDotNetBuildTasksTemplatingVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksTemplatingVersion>
<MicrosoftDotNetBuildTasksWorkloadsPackageVersion>8.0.0-beta.26224.3</MicrosoftDotNetBuildTasksWorkloadsPackageVersion>
<MicrosoftDotNetRemoteExecutorVersion>8.0.0-beta.26224.3</MicrosoftDotNetRemoteExecutorVersion>
<MicrosoftDotNetVersionToolsTasksVersion>8.0.0-beta.26224.3</MicrosoftDotNetVersionToolsTasksVersion>
<MicrosoftDotNetPackageTestingVersion>8.0.0-beta.26224.3</MicrosoftDotNetPackageTestingVersion>
<!-- NuGet dependencies -->
<NuGetBuildTasksPackVersion>6.0.0-preview.1.102</NuGetBuildTasksPackVersion>
<!-- Installer dependencies -->
Expand Down Expand Up @@ -154,20 +154,20 @@
<SystemValueTupleVersion>4.5.0</SystemValueTupleVersion>
<runtimenativeSystemIOPortsVersion>8.0.0-rc.1.23406.6</runtimenativeSystemIOPortsVersion>
<!-- Runtime-Assets dependencies -->
<SystemRuntimeNumericsTestDataVersion>8.0.0-beta.25625.3</SystemRuntimeNumericsTestDataVersion>
<SystemComponentModelTypeConverterTestDataVersion>8.0.0-beta.25625.3</SystemComponentModelTypeConverterTestDataVersion>
<SystemDataCommonTestDataVersion>8.0.0-beta.25625.3</SystemDataCommonTestDataVersion>
<SystemDrawingCommonTestDataVersion>8.0.0-beta.25625.3</SystemDrawingCommonTestDataVersion>
<SystemFormatsTarTestDataVersion>8.0.0-beta.25625.3</SystemFormatsTarTestDataVersion>
<SystemIOCompressionTestDataVersion>8.0.0-beta.25625.3</SystemIOCompressionTestDataVersion>
<SystemIOPackagingTestDataVersion>8.0.0-beta.25625.3</SystemIOPackagingTestDataVersion>
<SystemNetTestDataVersion>8.0.0-beta.25625.3</SystemNetTestDataVersion>
<SystemPrivateRuntimeUnicodeDataVersion>8.0.0-beta.25625.3</SystemPrivateRuntimeUnicodeDataVersion>
<SystemRuntimeTimeZoneDataVersion>8.0.0-beta.25625.3</SystemRuntimeTimeZoneDataVersion>
<SystemSecurityCryptographyX509CertificatesTestDataVersion>8.0.0-beta.25625.3</SystemSecurityCryptographyX509CertificatesTestDataVersion>
<SystemTextRegularExpressionsTestDataVersion>8.0.0-beta.25625.3</SystemTextRegularExpressionsTestDataVersion>
<SystemWindowsExtensionsTestDataVersion>8.0.0-beta.25625.3</SystemWindowsExtensionsTestDataVersion>
<MicrosoftDotNetCilStripSourcesVersion>8.0.0-beta.25625.3</MicrosoftDotNetCilStripSourcesVersion>
<SystemRuntimeNumericsTestDataVersion>8.0.0-beta.26153.1</SystemRuntimeNumericsTestDataVersion>
<SystemComponentModelTypeConverterTestDataVersion>8.0.0-beta.26153.1</SystemComponentModelTypeConverterTestDataVersion>
<SystemDataCommonTestDataVersion>8.0.0-beta.26153.1</SystemDataCommonTestDataVersion>
<SystemDrawingCommonTestDataVersion>8.0.0-beta.26153.1</SystemDrawingCommonTestDataVersion>
<SystemFormatsTarTestDataVersion>8.0.0-beta.26153.1</SystemFormatsTarTestDataVersion>
<SystemIOCompressionTestDataVersion>8.0.0-beta.26153.1</SystemIOCompressionTestDataVersion>
<SystemIOPackagingTestDataVersion>8.0.0-beta.26153.1</SystemIOPackagingTestDataVersion>
<SystemNetTestDataVersion>8.0.0-beta.26153.1</SystemNetTestDataVersion>
<SystemPrivateRuntimeUnicodeDataVersion>8.0.0-beta.26153.1</SystemPrivateRuntimeUnicodeDataVersion>
<SystemRuntimeTimeZoneDataVersion>8.0.0-beta.26153.1</SystemRuntimeTimeZoneDataVersion>
<SystemSecurityCryptographyX509CertificatesTestDataVersion>8.0.0-beta.26153.1</SystemSecurityCryptographyX509CertificatesTestDataVersion>
<SystemTextRegularExpressionsTestDataVersion>8.0.0-beta.26153.1</SystemTextRegularExpressionsTestDataVersion>
<SystemWindowsExtensionsTestDataVersion>8.0.0-beta.26153.1</SystemWindowsExtensionsTestDataVersion>
<MicrosoftDotNetCilStripSourcesVersion>8.0.0-beta.26153.1</MicrosoftDotNetCilStripSourcesVersion>
<!-- dotnet-optimization dependencies -->
<optimizationwindows_ntx64MIBCRuntimeVersion>1.0.0-prerelease.23566.3</optimizationwindows_ntx64MIBCRuntimeVersion>
<optimizationwindows_ntx86MIBCRuntimeVersion>1.0.0-prerelease.23566.3</optimizationwindows_ntx86MIBCRuntimeVersion>
Expand Down Expand Up @@ -197,10 +197,10 @@
<!-- Testing -->
<MicrosoftNETCoreCoreDisToolsVersion>1.1.0</MicrosoftNETCoreCoreDisToolsVersion>
<MicrosoftNETTestSdkVersion>17.4.0-preview-20220707-01</MicrosoftNETTestSdkVersion>
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>8.0.0-prerelease.25516.2</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>8.0.0-prerelease.25516.2</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
<MicrosoftDotNetXHarnessCLIVersion>8.0.0-prerelease.25516.2</MicrosoftDotNetXHarnessCLIVersion>
<MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>8.0.0-alpha.0.26116.3</MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>11.0.0-prerelease.26180.1</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>11.0.0-prerelease.26180.1</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
<MicrosoftDotNetXHarnessCLIVersion>11.0.0-prerelease.26180.1</MicrosoftDotNetXHarnessCLIVersion>
<MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>8.0.0-alpha.0.26202.2</MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>
<XUnitVersion>2.4.2</XUnitVersion>
<XUnitAnalyzersVersion>1.0.0</XUnitAnalyzersVersion>
<XUnitRunnerVisualStudioVersion>2.4.5</XUnitRunnerVisualStudioVersion>
Expand Down Expand Up @@ -231,7 +231,7 @@
<!-- ILCompiler -->
<MicrosoftDotNetILCompilerVersion>8.0.0-rc.1.23406.6</MicrosoftDotNetILCompilerVersion>
<!-- ICU -->
<MicrosoftNETCoreRuntimeICUTransportVersion>8.0.0-rtm.25625.2</MicrosoftNETCoreRuntimeICUTransportVersion>
<MicrosoftNETCoreRuntimeICUTransportVersion>8.0.0-rtm.26256.1</MicrosoftNETCoreRuntimeICUTransportVersion>
<!-- MsQuic -->
<MicrosoftNativeQuicMsQuicSchannelVersion>2.4.18</MicrosoftNativeQuicMsQuicSchannelVersion>
<!-- Mono LLVM -->
Expand Down
2 changes: 1 addition & 1 deletion eng/pipelines/common/xplat-setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ jobs:
# Public Linux Build Pool
${{ if and(or(in(parameters.osGroup, 'linux', 'freebsd', 'android', 'tizen'), eq(parameters.jobParameters.hostedOs, 'linux')), eq(variables['System.TeamProject'], 'public')) }}:
name: $(DncEngPublicBuildPool)
demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open
demands: ImageOverride -equals build.azurelinux.3.amd64.open

# Official Build Linux Pool
${{ if and(or(in(parameters.osGroup, 'linux', 'freebsd', 'android', 'tizen'), eq(parameters.jobParameters.hostedOs, 'linux')), ne(variables['System.TeamProject'], 'public')) }}:
Expand Down
10 changes: 5 additions & 5 deletions global.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{
"sdk": {
"version": "8.0.123",
"version": "8.0.126",
"allowPrerelease": true,
"rollForward": "major"
},
"tools": {
"dotnet": "8.0.123"
"dotnet": "8.0.126"
},
"msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.26112.1",
"Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.26112.1",
"Microsoft.DotNet.SharedFramework.Sdk": "8.0.0-beta.26112.1",
"Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.26224.3",
"Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.26224.3",
"Microsoft.DotNet.SharedFramework.Sdk": "8.0.0-beta.26224.3",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0",
"Microsoft.NET.Sdk.IL": "8.0.0-rc.1.23406.6"
Expand Down
67 changes: 37 additions & 30 deletions src/coreclr/debug/daccess/daccess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1544,24 +1544,24 @@ DAC_INSTANCE*
DacInstanceManager::Add(DAC_INSTANCE* inst)
{
_ASSERTE(inst != NULL);
#ifdef _DEBUG
bool isInserted = (m_hash.find(inst->addr) == m_hash.end());
#endif //_DEBUG
DAC_INSTANCE *(&target) = m_hash[inst->addr];
_ASSERTE(!isInserted || target == NULL);
if( target != NULL )
const KeyValuePair<TADDR, DAC_INSTANCE*>* pEntry = m_hash.LookupPtr(inst->addr);
if (pEntry != NULL)
{
DAC_INSTANCE* existing = pEntry->Value();

//This is necessary to preserve the semantics of Supersede, however, it
//is more or less dead code.
inst->next = target;
target = inst;
inst->next = existing;

//verify descending order
_ASSERTE(inst->size >= target->size);
_ASSERTE(inst->size >= existing->size);

m_hash.ReplacePtr(pEntry, KeyValuePair<TADDR, DAC_INSTANCE*>(inst->addr, inst));
}
else
{
target = inst;
inst->next = NULL;
m_hash.Add(KeyValuePair<TADDR, DAC_INSTANCE*>(inst->addr, inst));
}

return inst;
Expand Down Expand Up @@ -1803,15 +1803,13 @@ DacInstanceManager::Find(TADDR addr)
DAC_INSTANCE*
DacInstanceManager::Find(TADDR addr)
{
DacInstanceHashIterator iter = m_hash.find(addr);
if( iter == m_hash.end() )
{
return NULL;
}
else
const KeyValuePair<TADDR, DAC_INSTANCE*>* pEntry = m_hash.LookupPtr(addr);
if (pEntry != NULL)
{
return iter->second;
return pEntry->Value();
}

return NULL;
}
#endif // if defined(DAC_HASHTABLE)

Expand Down Expand Up @@ -1887,12 +1885,11 @@ DacInstanceManager::Supersede(DAC_INSTANCE* inst)
// later cleanup.
//

DacInstanceHashIterator iter = m_hash.find(inst->addr);
if( iter == m_hash.end() )
const KeyValuePair<TADDR, DAC_INSTANCE*>* pEntry = m_hash.LookupPtr(inst->addr);
if (pEntry == NULL)
return;

DAC_INSTANCE** bucket = &(iter->second);
DAC_INSTANCE* cur = *bucket;
DAC_INSTANCE* cur = pEntry->Value();
DAC_INSTANCE* prev = NULL;
//walk through the chain looking for this particular instance
while (cur)
Expand All @@ -1901,7 +1898,15 @@ DacInstanceManager::Supersede(DAC_INSTANCE* inst)
{
if (!prev)
{
*bucket = inst->next;
// Removing the head of the chain.
if (inst->next != NULL)
{
m_hash.ReplacePtr(pEntry, KeyValuePair<TADDR, DAC_INSTANCE*>(inst->addr, inst->next));
}
else
{
m_hash.Remove(inst->addr);
}
}
else
{
Expand Down Expand Up @@ -1982,7 +1987,7 @@ void DacInstanceManager::Flush(bool fSaveBlock)
}
}
#else //DAC_HASHTABLE
m_hash.clear();
m_hash.RemoveAll();
#endif //DAC_HASHTABLE

InitEmpty();
Expand Down Expand Up @@ -2021,18 +2026,17 @@ DacInstanceManager::ClearEnumMemMarker(void)
void
DacInstanceManager::ClearEnumMemMarker(void)
{
ULONG i;
DAC_INSTANCE* inst;

DacInstanceHashIterator end = m_hash.end();
DacInstanceHashIterator end = m_hash.End();
/* REVISIT_TODO Fri 10/20/2006
* This might have an issue, since it might miss chained entries off of
* ->next. However, ->next is going away, and for all intents and
* purposes, this never happens.
*/
for( DacInstanceHashIterator cur = m_hash.begin(); cur != end; ++cur )
for (DacInstanceHashIterator cur = m_hash.Begin(); cur != end; ++cur)
{
cur->second->enumMem = 0;
cur->Value()->enumMem = 0;
}

for (inst = m_superseded; inst; inst = inst->next)
Expand Down Expand Up @@ -2144,10 +2148,10 @@ DacInstanceManager::DumpAllInstances(
int numInBucket = 0;
#endif // #if defined(DAC_MEASURE_PERF)

DacInstanceHashIterator end = m_hash.end();
for (DacInstanceHashIterator cur = m_hash.begin(); end != cur; ++cur)
DacInstanceHashIterator end = m_hash.End();
for (DacInstanceHashIterator cur = m_hash.Begin(); end != cur; ++cur)
{
inst = cur->second;
inst = cur->Value();

// Only report those we intended to.
// So far, only metadata is excluded!
Expand Down Expand Up @@ -3270,6 +3274,9 @@ ClrDataAccess::Flush(void)
//
m_mdImports.Flush();

// Free cached patch entries for thread unwinding
m_patchCache.Flush();

// Free instance memory.
m_instances.Flush();

Expand Down
71 changes: 48 additions & 23 deletions src/coreclr/debug/daccess/dacfn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1505,43 +1505,68 @@ HRESULT DacReplacePatchesInHostMemory(MemoryRange range, PVOID pBuffer)
return S_OK;
}

if (g_dacImpl == nullptr)
{
return E_UNEXPECTED;
}

// Cache the patches as the target is not running during DAC operations, and hash
// table iteration is pretty slow.
const SArray<DacPatchCacheEntry>& entries = g_dacImpl->m_patchCache.GetEntries();

CORDB_ADDRESS address = (CORDB_ADDRESS)(dac_cast<TADDR>(range.StartAddress()));
SIZE_T cbSize = range.Size();

for (COUNT_T i = 0; i < entries.GetCount(); i++)
{
const DacPatchCacheEntry& entry = entries[i];

if (IsPatchInRequestedRange(address, cbSize, entry.address))
{
CORDbgSetInstructionEx(reinterpret_cast<PBYTE>(pBuffer), address, entry.address, entry.opcode, cbSize);
}
}

return S_OK;
}

const SArray<DacPatchCacheEntry>& DacPatchCache::GetEntries()
{
Populate();
return m_entries;
}

void DacPatchCache::Populate()
{
SUPPORTS_DAC;

if (m_isPopulated)
{
return;
}

// Clear any stale entries from previous failed population attempts
m_entries.Clear();

HASHFIND info;

DebuggerPatchTable * pTable = DebuggerController::GetPatchTable();
DebuggerControllerPatch * pPatch = pTable->GetFirstPatch(&info);

// <PERF>
// The unwinder needs to read the stack very often to restore pushed registers, retrieve the
// return addres, etc. However, stack addresses should never be patched.
// One way to optimize this code is to pass the stack base and the stack limit of the thread to this
// function and use those two values to filter out stack addresses.
//
// Another thing we can do is instead of enumerating the patches, we could enumerate the address.
// This is more efficient when we have a large number of patches and a small memory range. Perhaps
// we could do a hybrid approach, i.e. use the size of the range and the number of patches to dynamically
// determine which enumeration is more efficient.
// </PERF>
while (pPatch != NULL)
{
CORDB_ADDRESS patchAddress = (CORDB_ADDRESS)dac_cast<TADDR>(pPatch->address);

if (patchAddress != NULL)
{
PRD_TYPE opcode = pPatch->opcode;

CORDB_ADDRESS address = (CORDB_ADDRESS)(dac_cast<TADDR>(range.StartAddress()));
SIZE_T cbSize = range.Size();

// Check if the address of the patch is in the specified memory range.
if (IsPatchInRequestedRange(address, cbSize, patchAddress))
{
// Replace the patch in the buffer with the original opcode.
CORDbgSetInstructionEx(reinterpret_cast<PBYTE>(pBuffer), address, patchAddress, opcode, cbSize);
}
DacPatchCacheEntry entry;
entry.address = patchAddress;
entry.opcode = pPatch->opcode;
m_entries.Append(entry);
}

pPatch = pTable->GetNextPatch(&info);
}

return S_OK;
m_isPopulated = true;
}
Loading
Loading