JIT: modify inline budget update to use estimated imported IL size
The inliner keeps a time budget to try and avoid pathological runaway inline
behavior (see dotnet/coreclr#4375). The jit estimates the time impact of an inline using a
simple projection based on IL size. If an prospective inline would put the jit
over the time budget, the inline is blocked -- and note even aggressive inlines
can be blocked this way.
We now have a fair number of aggressive inline methods like
`Vector256<T>.IsSupported` where the IL is optimized early on by the jit and the
actual impact on the calling method is much less than the initial IL size would
suggest. For instance `IsSupported` is 286 bytes of IL, but the net contribution
of this method at jit time is either a constant 0 or 1, and so the effective size
is more like 2 bytes of IL.
This set of changes updates the jit to estimate the imported IL size of a method
when updating the budget.
Closes dotnet/coreclr#21794.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3f182cfcf80af6500217673d920c52ccf6919661