Inliner: updates to ModelPolicy
authorAndy Ayers <andya@microsoft.com>
Fri, 8 Jul 2016 00:53:43 +0000 (17:53 -0700)
committerAndy Ayers <andya@microsoft.com>
Sat, 9 Jul 2016 00:14:52 +0000 (17:14 -0700)
commitab99e342e8b00e402ea6b3838fd3b5f8ae5fcccd
tree08b783a30928dbd75f72763696aed6534349b575
parentdb9eb2780c50e42f9a4dc49d14c8e865312baa5a
Inliner: updates to ModelPolicy

Updates to bring CS and TP impact of the ModelPolicy into more acceptable
ranges.

For CS, reduce the call site weights to values that are more in keeping
with the legacy policy weights. Local test runs show this does not
drastically alter CQ and brings CS down below LegacyPolicy levels, on
average.

Implement an early out rejection based solely on ILSize. The threshold
value is set by conservatively determining when ILSize alone indicates
the method in question will never be inlined (note the policy itself
does not have an explicit ILSize cutoff). See comments for
`ModelPolicy::NoteInt` for details. Note if we adjust the model's size
and profitability estimates, this threshould will also need updating.

CQ (as measured by the CoreCLR perf tests) continues to show about a
2.5% geomean improvement over LegacyPolicy.

Commit migrated from https://github.com/dotnet/coreclr/commit/ff2700a4b43ffd1fd82fc8a3bb1b24ffc638713a
src/coreclr/src/jit/inlinepolicy.cpp
src/coreclr/src/jit/inlinepolicy.h