Enable tiered jitting for R2R methods (#15967)
authorKoundinya Veluri <kouvel@users.noreply.github.com>
Thu, 25 Jan 2018 20:01:32 +0000 (12:01 -0800)
committerGitHub <noreply@github.com>
Thu, 25 Jan 2018 20:01:32 +0000 (12:01 -0800)
commit209415618ca5d1a5d1d9e39ca78d643d0935534e
treed83c946783390afbb52e3e0f968018c38dfd2560
parente9985126acb0f1efd7c780faac4e66bc798b73c0
Enable tiered jitting for R2R methods (#15967)

Enable tiered jitting for R2R methods

- Included R2R methods and generics over value types in CoreLib for tiered jitting. Tier 0 for R2R methods is the precompiled code if available, and tier 1 is selectively scheduled based on call counting.
- Added a delay before starting to count calls for tier 1 promotion. The delay is a short duration after frequent tier 0 jitting stops (current heuristic for identifying startup).
- Startup time and steady-state performance have improved on JitBench. There is a regression shortly following startup due to call counting and tier 1 jitting, for a short duration before steady-state performance stabilizes.
- Added two new config values, one for configuring the call count threshold for promoting to tier 1, and another for specifying the delay from the last tier 0 JIT invocation before starting to count calls
17 files changed:
src/inc/clrconfigvalues.h
src/vm/arm/cgencpu.h
src/vm/arm64/cgencpu.h
src/vm/callcounter.cpp
src/vm/callcounter.h
src/vm/ceemain.cpp
src/vm/codeversion.cpp
src/vm/eeconfig.cpp
src/vm/eeconfig.h
src/vm/i386/stublinkerx86.cpp
src/vm/i386/stublinkerx86.h
src/vm/methodtablebuilder.cpp
src/vm/precode.cpp
src/vm/precode.h
src/vm/prestub.cpp
src/vm/tieredcompilation.cpp
src/vm/tieredcompilation.h