Add glob filters support to disassembler to allow disassembling specific methods #2072
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So far, the disassembler was always loading the type that was generated by BDN, searching for the benchmark method, disassembling it and when encountered direct method calls, disassembling the called methods as well (if their depth was <= configured depth).
This was working fine, but only for direct method calls. For indirect, the disassembly was incomplete.
When I was working on dotnet/runtime#73064 it was really a PITA to me, and I tried to come up with a workaround for it. So here it is: a possibility to specify a glob pattern(s) for methods that we want to be disassembled.
How it works:
Sample results for the Perf_Encoding.GetBytes benchmark:
Before:
After:
dotnet run -c Release -f net7.0 --filter "*Perf_Encoding.GetBytes" --disasm --disasmFilter *ASCIIUtility.NarrowUtf16ToAscii_Intrinsified*cc @kunalspathak @AndyAyersMS @EgorBo @janvorli @stephentoub