JIT: make profile data available to inlinees (#42277)
authorAndy Ayers <andya@microsoft.com>
Wed, 16 Sep 2020 18:14:37 +0000 (11:14 -0700)
committerGitHub <noreply@github.com>
Wed, 16 Sep 2020 18:14:37 +0000 (11:14 -0700)
commit54148e8e24d1c44021abbd378ecea479e8763fe4
tree4a12cbbfbf9b0a8b5006ced9de1cc9ced8b93740
parent9da454c1ef9bde6965b1220cd62982c1d4b5e376
JIT: make profile data available to inlinees (#42277)

Update the jit to try and read profile data for inlinees, and if successful,
scale it appropriately for the inline call site. This kicks in for crossgen
BBOPT and TieredPGO Tier1.

Update VM and Crossgen hosts to handle requests for inlinee profile counts.
Crossgen2 does not seem to support profile data retrieval yet.

Note crossgen experience may not be as good as one might expect, because
crossgen BBINSTR loses counts for inlinees. But enabling this for crossgen
even with this limitation is probably a win overall.

Fix small issue in the jit where we were overly aggressive about merging the
callee block's flags into the callsite block's flags.
src/coreclr/src/jit/compiler.cpp
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/flowgraph.cpp
src/coreclr/src/jit/inline.h
src/coreclr/src/vm/jitinterface.cpp
src/coreclr/src/zap/zapinfo.cpp