Improve likely class handling for pgo (#51284)
authorDavid Wrighton <davidwr@microsoft.com>
Fri, 16 Apr 2021 18:49:56 +0000 (11:49 -0700)
committerGitHub <noreply@github.com>
Fri, 16 Apr 2021 18:49:56 +0000 (11:49 -0700)
commit2810ae5ff692108291692dec5ac36ba698af887b
tree7d14875e50cf186036b2715342f58b4d073b93f9
parent33033b22eccf50550451387ac8927ad1b5f17768
Improve likely class handling for pgo (#51284)

- Move processing of likely class histogram into the JIT
- Fix cases where the devirtualization logic in crossgen2 behaved incorrectly in the presence of likely class histogram data
- Pre-process histogram at crossgen2 time to reduce the size of the pgo data
  - This removes 3/4 of the data from System.Private.CoreLib
33 files changed:
src/coreclr/ToolBox/superpmi/superpmi-shared/agnostic.h
src/coreclr/ToolBox/superpmi/superpmi-shared/lwmlist.h
src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.cpp
src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.h
src/coreclr/ToolBox/superpmi/superpmi-shim-collector/icorjitinfo.cpp
src/coreclr/ToolBox/superpmi/superpmi-shim-counter/icorjitinfo.cpp
src/coreclr/ToolBox/superpmi/superpmi-shim-simple/icorjitinfo.cpp
src/coreclr/ToolBox/superpmi/superpmi/icorjitinfo.cpp
src/coreclr/inc/corjit.h
src/coreclr/inc/icorjitinfoimpl_generated.h
src/coreclr/inc/jiteeversionguid.h
src/coreclr/inc/pgo_formatprocessing.h
src/coreclr/jit/CMakeLists.txt
src/coreclr/jit/ClrJit.PAL.exports
src/coreclr/jit/ClrJit.exports
src/coreclr/jit/ICorJitInfo_API_names.h
src/coreclr/jit/ICorJitInfo_API_wrapper.hpp
src/coreclr/jit/importer.cpp
src/coreclr/jit/jit.h
src/coreclr/jit/likelyclass.cpp [new file with mode: 0644]
src/coreclr/tools/Common/JitInterface/CorInfoBase.cs
src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs
src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt
src/coreclr/tools/Common/Pgo/PgoFormat.cs
src/coreclr/tools/Common/Pgo/TypeSystemEntityOrUnknown.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/InstrumentationDataTableNode.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs
src/coreclr/tools/aot/jitinterface/jitinterface.h
src/coreclr/vm/jitinterface.cpp
src/coreclr/vm/jitinterface.h
src/coreclr/vm/pgo.cpp
src/coreclr/vm/pgo.h
src/coreclr/zap/zapinfo.cpp