-
Couldn't load subscription status.
- Fork 5.2k
Resolve call mdtokens when making tier 1 inline observations #50675
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
Resolve call mdtokens when making tier 1 inline observations #50675
Conversation
…argets when in Tier1 making inline observations
…True/False as constants in fgFindJumpTargets
|
This change produced zero PMI diffs for CC. @jkotas, @AndyAyersMS |
|
Any other feedback/changes needed here? |
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.
No -- looks good.
…shim_mono # By Aaron Robinson (10) and others # Via GitHub * upstream/main: (108 commits) [mbr] Add Apple sample (dotnet#50740) make EstablishProxyTunnelAsync throw on failure status code from proxy (dotnet#50763) Improve RGB Min Max evaluation performance by using 2 or 3 comparison… (dotnet#50622) [mono] More domain cleanups (dotnet#50479) Fix Crossgen2 of PlatformDefaultMemberFunction methods and calls. (dotnet#50754) Disable EventSource generator in design-time builds (dotnet#50741) Fix X509 test failures on Android (dotnet#50301) Do not confuse fgDispBasicBlocks in fgMorphBlocks (dotnet#50703) Enforce 64KB event payload size limit on EventPipe (dotnet#50600) Reorganize CoreCLR native build to reduce CMake reconfigures when the build system is untouched (dotnet#49906) [mbr] Turn on hot reload for iOS, tvOS and MacCatalyst (dotnet#50458) improve connection scavenge logic by doing zero-byte read (dotnet#50545) Resolve call mdtokens when making tier 1 inline observations (dotnet#50675) Annotate APIs in System.Private.Xml (dotnet#49682) Support compiling against OpenSSL 3 headers Change Configuration.Json to use a regular Dictionary. (dotnet#50611) Remove unused BigNumFromBinary P/Invoke (dotnet#50670) Make Ninja the default CMake generator on Windows for the repo (dotnet#49715) [AppleAppBuilder] Entitlements to run tests on catalyst using the JIT (dotnet#50637) [mono] Fix delegate invokes to dynamic methods in mixed mode. (dotnet#50547) ... # Conflicts: # src/mono/dlls/mscordbi/CMakeLists.txt
This updates
Compiler::fgFindJumpTargetsto support resolving call tokens when making inline observations for Tier 1.A test of
csccompiling a simpleHelloWorldprogram (csc.dll Program.cs /r:System.Runtime.dll /r:System.Console.dll /r:System.Private.Corelib.dll) withCOMPlus_ReadyToRun=0andCOMPlus_TieredCompilation=0resulted in the following impact:Compiler::fgFindJumpTargetgoes from0.48%to0.63%of instructions retired (28.5mto39.25m)CEEInfo::resolveTokengoes from0.32%to0.34%of instructions retired (19mto21m)CEEInfo::getCallInfogoes from0.36%to0.32%of instructions retired (21.25mto19.75m)As per the flame graph (see below), the majority of time is still spent in the backend. There was no measured impact for

tier 0methods.This change will allow us to make potential improvements to inlining for methods that involve many intrinsic calls. Some potential metrics we could use to influence inlining include:
intrinsic(Named or Otherwise)hwintrinsicand therefore are not calls at all, but are effectively "simple ops"Mathcalls)Isa.IsSupportedstring.LengthorType.op_EqualitychecksWe can place this behind a
DOTNET_*(COMPlus_*) switch if there are any remaining concerns around impact.