Refactor inliner
This change rearranges some of the inliner code. The main goal is to
make some of the larger functions more readable and make clearer how to
modify the inliner in the future.
Some of the specific changes include:
* Code to find the actually call target has been factored into a
separate method.
* The call to TryInlineFromEarlyCache has been made into an early exit
rather than a fall through case. This lowers the indentation level for
the main inline case.
* Split the initial checks for whether inlining is possible into
IsInliningAllowed, IsInliningSupported, and
IsInliningBudgetAvailable. This is to make it more clear why these
restrictions are in place. Note that some of these checks are now in a
different order.
* Factor the checks that come after the inlined body has been optimized
into a separate method. These haven't been further broken down yet,
but this would be worthwhile future work.
* Remove CanAllocateRegistersFor. We should be able to allocate
registers for any compiler we support, and if not, this should be
caught when we try to allocate registers instead.
Bug: 149392334
Test: ./test/testrunner/testrunner.py --host --optimizing --no-jvmti --ndebug \
--64
Change-Id: Ic1b919e306b7b93944ee5686e2a487b2190c087c
5 files changed