InlineRefactoring: introducing InlinePolicy
authorAndy Ayers <andya@microsoft.com>
Mon, 22 Feb 2016 21:51:52 +0000 (13:51 -0800)
committerAndy Ayers <andya@microsoft.com>
Tue, 23 Feb 2016 16:28:04 +0000 (08:28 -0800)
commitb13682427bb75131a19e8aa48746ef1e644d3574
tree1ee37f488e53bbcaff00227d8f77bd48c0784c6a
parentdbe3db63800223ed532f3c7ca780789dd05d3a70
InlineRefactoring: introducing InlinePolicy

Split the policy aspect of the InlineResult into a separate
policy object, acessed from the InlineResult via a base class.

Implement a LegacyPolicy to capture today's behavior.

Create a factory method for determining what policy to use. Right
now it always creates a LegacyPolicy. This is newed up for each
Inline decision, but since the InlineResult has relatively short
lifetime, we should probably recycle policy objects (might be
more desirable once they start having a bit more state).

Split out a bunch of the InlineDecision helper methods that lived
on InlineResult into global methods since policies will want to refer
to them too. Shame that enum classes don't allow member functions.

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