Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide API to get MT/EEClass/MD for Desktop flavor #12

Closed
zvirja opened this issue Sep 24, 2015 · 1 comment
Closed

Provide API to get MT/EEClass/MD for Desktop flavor #12

zvirja opened this issue Sep 24, 2015 · 1 comment
Assignees

Comments

@zvirja
Copy link

zvirja commented Sep 24, 2015

Extend ClrMD API and allow to access the following data.

For ClrType:

  • MethodTable address;
  • EEClass address.

Ensure that EEClass data is correct for generics (which could share the same MT, AFAIK).

For the ClrMethod:

  • MethodDesc address.
@leculver
Copy link
Contributor

leculver commented Oct 8, 2015

I have added basic support for getting raw runtime pointers (MethodTable, EEClass, MethodDesc). I need to spend some time writing documentation on it, but I'm not sure when I'll have time for it. I've implemented enough I'm going to go ahead and close this issue, but there's two outstanding issues:

  1. I need to make sure there's nothing I missed with EEClass. I will talk to an expert on the team tomorrow.
  2. While the basic functionality is implemented, I did not cache a lot of the calculations that need to be done. If you are using EnumerateMethodTables or EnumerateMethodDescs on a multiple-AppDomain targets, you will likely see very bad performance until I can find the right performance tradeoff.

(Specifically on 2, we will hit GetMethodTableList and enumerate through them when looking for a particular type's MethodTables. If you start seeing bad perf in those methods, the uses of that function is the place to start digging.)

@leculver leculver closed this as completed Oct 8, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants