Uh oh!
There was an error while loading. Please reload this page.
[cdac] Basic ISOSDacInterface::GetMethodDescData - #106413
Conversation
Tagging subscribers to this area: @tommcdon |
ebdeb59 to
2383fd2Compare79bbf28 to
ebb4a67Comparee9fe709 to
aac3fafCompare| TargetPointer GetILBase(ModuleHandle handle); | ||
| ModuleLookupTables GetLookupTables(ModuleHandle handle); | ||
| TargetPointer GetModuleLookupMapElement(TargetPointer table, uint rid, out TargetNUInt flags); | ||
| bool IsCollectibleLoaderAllocator(ModuleHandle handle); |
There was a problem hiding this comment.
I think we'll want to have a LoaderAllocator contract. There is a bunch of ... stuff... on there, and I feel like we'll likely need something there.
There was a problem hiding this comment.
For this particular API (checking if the module is collectible), it seems like it should cut out the LoaderAllocator concept? Since once you're at the Module (instead of a MethodDesc), the module's IsCollectible should match the module's loader allocator's IsCollectible.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| public virtual bool IsVersionable(MethodDescHandle methodDesc); | ||
| // Return a pointer to the IL versioning state of the MethodDesc | ||
| public virtual TargetPointer GetMethodDescVersioningState(MethodDescHandle methodDesc); |
There was a problem hiding this comment.
We're going to need the ability to walk the list of IL versions, and Native code versions, and query various details about these things. This doesn't feel like the right api. Could you get it onto the CodeVersions contract?
There was a problem hiding this comment.
This just extracts the address from the MethodDescCodeData. All the logic for working with the versioning state is in CodeVersions.
It's not that different from
TargetPointermodAddr=RuntimeTypeSystem.GetModule(TypeHandleth);
ModuleHandlemod=Loader.GetModuleHandle(modAddr);RTS gives you a pointer and Loader turns it into a handle that you can use for queries. Similarly RTS will give a pointer to the versioning state and CodeVersions will consume it in some manner.
Currently the versioning state is consumed entirely internally in the CodeVersions contract, but in the future it could be exposed via a handle or through some data API (see GetSpecificNativeCodeVersion and IsActiveNativeCodeVersion implementations)
Uh oh!
There was an error while loading. Please reload this page.
| TargetPointer GetILBase(ModuleHandle handle); | ||
| ModuleLookupTables GetLookupTables(ModuleHandle handle); | ||
| TargetPointer GetModuleLookupMapElement(TargetPointer table, uint rid, out TargetNUInt flags); | ||
| bool IsCollectibleLoaderAllocator(ModuleHandle handle); |
There was a problem hiding this comment.
For this particular API (checking if the module is collectible), it seems like it should cut out the LoaderAllocator concept? Since once you're at the Module (instead of a MethodDesc), the module's IsCollectible should match the module's loader allocator's IsCollectible.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it. |
Currently only works on non-generic non-R2R methods (and probably only ones that are still Tier0)
TODO:
LoaderAllocatorcontractLoaderModulemembers from MethodDescChunk and FnPtrTypeDesccontributes to #99302