-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
JIT: run instrumentation phase just after importing #47476
JIT: run instrumentation phase just after importing #47476
Conversation
As a prerequisite to enabling efficient instrumentation, add instrumentation immediately after importing, so the flow graph more closely reflects the IL level view.
Contributes to #46882. PTAL @dotnet/jit-contrib |
/azp run runtime-jit-experimental |
Azure Pipelines successfully started running 1 pipeline(s). |
Jit experimental has some known failures in OSR & EH Write Through -- mainly looking at the PGO testing it does here. |
It seems odd to push more things to before the inlining-only and import-only bail-outs. Shouldn't we push more things after those? I guess I don't understand what requires us to do something to inlinees here, versus after then are imported to the inliner. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks Good
Not sure I understand what you're asking. We want to instrument early since instrumentation is keyed to IL and the presence of blocks with no IL relationship can confuse things. Currently we can just skip such blocks but when we start looking at spanning tree based instrumentation those blocks can potentially alter the in-tree and non-tree edge sets and it's easier not to have to worry about that at all. We currently only instrument root methods, but at some point in the future we may instrument inlinees. I suspect import-only is largely a dead code path now ... ? Though I think @erozenfeld may have used it in his call graph construction prototype. At any rate nothing happens here without BBINSTR being set. |
That's correct, I used import-only mode in the call graph prototype. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I chatted with @AndyAyersMS and cleared up my questions.
LGTM.
Jit experimental test failures are as expected (all pgo tests passed). |
As a prerequisite to enabling efficient instrumentation, add instrumentation
immediately after importing, so the flow graph more closely reflects the IL
level view.