Add config option to disable tier 0 JIT (dotnet/coreclr#22370)
authorKoundinya Veluri <kouvel@users.noreply.github.com>
Fri, 8 Feb 2019 01:51:29 +0000 (17:51 -0800)
committerGitHub <noreply@github.com>
Fri, 8 Feb 2019 01:51:29 +0000 (17:51 -0800)
commitf4270d8aecc11bf9aabc63f725a0bae5b1f8008d
treed01248d3e0e7a48487c1e74b4f993d8520dffede
parent6f8fe758ed6f88cad701ebbef4b4375360657aad
Add config option to disable tier 0 JIT (dotnet/coreclr#22370)

Add config option to disable tier 0 JIT

Fixes https://github.com/dotnet/coreclr/issues/21856
- For methods that don't have pregenerated code, using tier 0 JIT can improve startup perf, and disabling tier 0 JIT can be useful to sacrifice some startup time to avoid issues of running tier 0 code for too long. In some cases, it may also be desirable to avoid tiering up much later.
- A fixed value for the call count indicates that tier 0 call counting is disabled. When disabled, the method starts at tier 1.
- Also modified call counting to start from a predetermined threshold and count down to zero, as it simplifies some things, allows for methods to have different thresholds, and likely is what we would want eventually anyway
- Took a small step towards eliminating knowledge of specific tier levels in code that should not care, though more is to be done there

Commit migrated from https://github.com/dotnet/coreclr/commit/19ed7168345d34336cbc5a334b3fca36046a1af1
src/coreclr/src/inc/clrconfigvalues.h
src/coreclr/src/vm/callcounter.cpp
src/coreclr/src/vm/callcounter.h
src/coreclr/src/vm/codeversion.cpp
src/coreclr/src/vm/codeversion.h
src/coreclr/src/vm/eeconfig.cpp
src/coreclr/src/vm/eeconfig.h
src/coreclr/src/vm/prestub.cpp
src/coreclr/src/vm/tieredcompilation.cpp
src/coreclr/src/vm/tieredcompilation.h