[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress - #115131

Merged
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3
Aug 11, 2025
Merged

[cDAC] Implement IXCLRDataProcess.EnumMethodInstancesByAddress#115131
max-charlamb merged 47 commits into
dotnet:mainfrom
max-charlamb:cdac-symbol-reading-3

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Apr 28, 2025

Copy link
Copy Markdown
Member

Contributes to #114336

Implements:
IXCLRDataProcess.StartEnumMethodInstancesByAddress
IXCLRDataProcess.EnumMethodInstancesByAddress
IXCLRDataProcess.EndEnumMethodInstancesByAddress
IXCLRDataMethodInstance.GetTokenAndScope
IXCLRDataMethodInstance.GetRepresentativeEntryAddress

These final two APIs allow me to test that enumerating the method instances return the correct COM object/data.

In order to implement these APIs, the following contracts were updated:

  • ILoader
    • IEnumerable<TargetPointer> GetAvailableTypeParams(ModuleHandle handle)
    • IEnumerable<TargetPointer> GetInstantiatedMethods(ModuleHandle handle)
  • IRuntimeTypeSystem
    • TargetPointer GetMethodDescForSlot(TypeHandle methodTable, ushort slot)
    • Refactored MethodDesc validation to allow skipping validation for known good MethodDesc pointers.

and the following data types were added:

  • EETypeHashTable to read available type parameters on a module
  • InstMethodHashTable to read instantiated methods in a module

Fixed small bug in DAC where status wasn't properly returned in ClrDataAccess::StartEnumMethodInstancesByAddress

Questions

  1. Where should I add MethodDesc::s_ClassificationSizeTable to the DAC Enum memory regions so it is present in all mini dumps?
    • Given the DAC already uses this when creating a minidump, it should be present.
  2. Should the RuntimeTypeSystem contract be updated here, or in another PR regarding the async changes? Do we need to do a contract bump?
    • Added extra flags for to support async

@ghostghost added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@max-charlambmax-charlamb added area-Diagnostics-coreclr and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @tommcdon
See info in area-owners.md if you want to be subscribed.

Comment threadsrc/coreclr/debug/runtimeinfo/contractpointerdata.cpp Outdated
Comment threadsrc/coreclr/debug/runtimeinfo/datadescriptor.cpp Outdated
CopilotAI review requested due to automatic review settings August 4, 2025 20:11

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements IXCLRDataProcess.EnumMethodInstancesByAddress and related APIs to support enumerating method instances for debugging scenarios. The implementation introduces new data contracts for reading instantiated methods and type parameters from modules, along with the necessary COM wrappers.

  • Implements the core enumeration APIs for method instances by address
  • Adds IXCLRDataMethodInstance COM interface with token/scope and entry address methods
  • Extends contracts to support reading hash tables for instantiated methods and available type parameters

Reviewed Changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.csAdds new Module fields for AvailableTypeParams and InstMethodHashTable
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.MethodDescriptors.csAdds dummy MethodDescSizeTable global for tests
src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.csImplements core enumeration logic and EnumMethodInstances helper class
src/native/managed/cdac/mscordaccore_universal/Legacy/IXCLRData.csDefines IXCLRDataMethodInstance interface and updates method signatures
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataModule.csUpdates signature for EnumMethodInstanceByName
src/native/managed/cdac/mscordaccore_universal/Legacy/ClrDataMethodInstance.csImplements IXCLRDataMethodInstance COM wrapper
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader/CachingContractRegistry.csMinor formatting fix
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/RuntimeTypeSystemHelpers/MethodDescFlags_1.csAdds HasAsyncMethodData flag
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Module.csAdds AvailableTypeParams and InstMethodHashTable fields
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/MethodDescChunk.csAdds FirstMethodDesc calculated field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/InstMethodHashTable.csNew data type for reading instantiated method hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EETypeHashTable.csNew data type for reading available type parameter hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEClass.csAdds MethodDescChunk field
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/DacEnumerableHash.csBase implementation for reading DAC enumerable hash tables
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/RuntimeTypeSystem_1.csImplements GetMethodDescForSlot and GetIntroducedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/Loader_1.csImplements GetAvailableTypeParams and GetInstantiatedMethods
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds MethodDescSizeTable global
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds new data types EETypeHashTable and InstMethodHashTable
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IRuntimeTypeSystem.csAdds GetMethodDescForSlot method
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/ILoader.csAdds GetAvailableTypeParams and GetInstantiatedMethods methods
src/coreclr/vm/typehash.hAdds cdac_data template specialization for EETypeHashTable
src/coreclr/vm/instmethhash.hAdds cdac_data template specialization for InstMethodHashTable
src/coreclr/vm/dacenumerablehash.hFixes typo and adds friend declaration for cdac_data
src/coreclr/vm/class.hAdds MethodDescChunk field to cdac_data template
src/coreclr/debug/runtimeinfo/datadescriptor.incAdds data descriptors for new types and fields
docs/design/datacontracts/RuntimeTypeSystem.mdDocuments new APIs and data structures
docs/design/datacontracts/Loader.mdDocuments new hash table reading functionality
Comments suppressed due to low confidence (1)

src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.IXCLRDataProcess.cs:143

  • The field _appDomain should not be readonly since it's assigned in the constructor but accessed publicly. Either make it a property or remove readonly.
 public readonly TargetPointer _appDomain;

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@max-charlamb@noahfalk@jkotas@davidwrighton