JIT: refactor instrumentation code#47509
Conversation
Refactor `fgInstrument` and related methods and classes, so that the strategies for block and class instrumentation are clearly separated out, and can be varied.
|
@dotnet/jit-contrib PTAL This is essentially a no-diff change, save that the schemas will now interleave count and class probe elements. If that's undesirable I can revise to keep them in separate ranges of the schema. I am sharing some under-utilized fields in BasicBlock to keep track of the block to (base) schema index. This should be the last prerequisite change before I implement the sparse instrumentation scheme described in #46882. Might be a bit tricky to review given all the code that has moved around. |
|
/azp run runtime-jit-experimental |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run runtime-jit-experimental |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Experimental failures are the "expected" ones in OSR/EhWriteThru (same as in #47476). All the PGO tests passed. |
| // ClassProbeInstrumentor::SuppressProbes: clean up if we're not instrumenting | ||
| // | ||
| // Notes: | ||
| // Currently we're hijacking the gtCallStubAddre of the call node to hold |
There was a problem hiding this comment.
nit: => gtStubCallStubAddre => gtStubCallStubAddr
There was a problem hiding this comment.
Thanks. Will fix in the next PR...
Refactor
fgInstrumentand related methods and classes, so that the strategiesfor block and class instrumentation are clearly separated out, and can be
varied.