Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged

Conversation

@tannergooding
Copy link
Member

This updatesCompiler::fgFindJumpTargets to support resolving call tokens when making inline observations for Tier 1.

A test ofcsc compiling a simpleHelloWorld program (csc.dll Program.cs /r:System.Runtime.dll /r:System.Console.dll /r:System.Private.Corelib.dll) withCOMPlus_ReadyToRun=0 andCOMPlus_TieredCompilation=0 resulted in the following impact:

  • Compiler::fgFindJumpTarget goes from0.48% to0.63% of instructions retired (28.5m to39.25m)
  • CEEInfo::resolveToken goes from0.32% to0.34% of instructions retired (19m to21m)
  • CEEInfo::getCallInfo goes from0.36% to0.32% of instructions retired (21.25m to19.75m)

As per the flame graph (see below), the majority of time is still spent in the backend. There was no measured impact fortier 0 methods.
image

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:

  • How many calls areintrinsic (Named or Otherwise)
  • How many calls arehwintrinsic and therefore are not calls at all, but are effectively "simple ops"
  • How many calls are CSE or constant folding candidates (such asMath calls)
  • How many calls are "constants" likeIsa.IsSupported
  • How many calls are potential constants, likestring.Length orType.op_Equality checks

We can place this behind aDOTNET_* (COMPlus_*) switch if there are any remaining concerns around impact.

@ghostghost added the area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI labelApr 3, 2021
@tannergooding
Copy link
MemberAuthor

This change produced zero PMI diffs forframeworks,benchmarks andtests.#50426 contains more details that led up to this PR.

CC.@jkotas,@AndyAyersMS

@tannergooding
Copy link
MemberAuthor

Any other feedback/changes needed here?

Copy link
Member

@AndyAyersMSAndyAyersMS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

No -- looks good.

@tannergoodingtannergooding merged commite9e8bc7 intodotnet:mainApr 5, 2021
thaystg added a commit to thaystg/runtime that referenced this pull requestApr 6, 2021
…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
@JulieLeeMSFTJulieLeeMSFT added this to the6.0.0 milestoneApr 15, 2021
@ghostghost locked asresolvedand limited conversation to collaboratorsMay 15, 2021
@tannergoodingtannergooding deleted the resolve-tokens-inline branchJuly 1, 2025 14:39
Sign up for freeto subscribe to this conversation on GitHub. Already have an account?Sign in.

Reviewers

@jkotasjkotasjkotas left review comments

@AndyAyersMSAndyAyersMSAndyAyersMS approved these changes

Assignees

@tannergoodingtannergooding

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Milestone

6.0.0

Development

Successfully merging this pull request may close these issues.

4 participants

@tannergooding@jkotas@AndyAyersMS@JulieLeeMSFT

[8]ページ先頭

©2009-2025 Movatter.jp