When QuickJit is enabled, disable it for methods that contain loops by default (dotne...
authorKoundinya Veluri <kouvel@users.noreply.github.com>
Thu, 2 May 2019 20:48:13 +0000 (13:48 -0700)
committerGitHub <noreply@github.com>
Thu, 2 May 2019 20:48:13 +0000 (13:48 -0700)
commitfd57f4c9f14e165701c6cb97c23afe5dc39be22f
tree5d383004171e82d9bd775ecc3bf54e4752a27cb4
parent223e872163b673e91cb7fa505221fe9f983c225b
When QuickJit is enabled, disable it for methods that contain loops by default (dotnet/coreclr#24252)

When QuickJit is enabled, disable it for methods that contain loops by default

Fixes https://github.com/dotnet/coreclr/issues/19751 by default when QuickJit is enabled
- Added config variable TC_QuickJitForLoops. When disabled (the default), the JIT identifies loops and explicit tail calls and switches to tier 1 JIT.
- This would prevent the possibility of spending too long in QuickJit code, but may decrease startup time a bit when QuickJit is enabled
- Removed TC_StartupTier_OptimizeCode, as now that there is TC_QuickJit, I didn't see a good use for it
- Removed references to "StartupTier" in config variables because we had previously decided not to call it that.
- When QuickJit is disabled, avoid creating native code slots for methods in non-R2R'ed modules, as tiering would be disabled for those anyway
- Marked TC_QuickJit config var as external

Commit migrated from https://github.com/dotnet/coreclr/commit/607c8db3931cc4f4afe086f2cd4dd957d35ef0ac
15 files changed:
docs/coreclr/project-docs/clr-configuration-knobs.md
src/coreclr/src/inc/clrconfigvalues.h
src/coreclr/src/inc/corinfo.h
src/coreclr/src/jit/compiler.cpp
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/flowgraph.cpp
src/coreclr/src/vm/callcounter.cpp
src/coreclr/src/vm/eeconfig.cpp
src/coreclr/src/vm/eeconfig.h
src/coreclr/src/vm/jitinterface.cpp
src/coreclr/src/vm/methodtablebuilder.cpp
src/coreclr/src/vm/prestub.cpp
src/coreclr/src/vm/tieredcompilation.cpp
src/coreclr/tests/src/JIT/Directed/IL/Tailcall/ExplicitTailCallNoSO.il [new file with mode: 0644]
src/coreclr/tests/src/JIT/Directed/IL/Tailcall/ExplicitTailCallNoSO.ilproj [new file with mode: 0644]