Pgo phase3 (#47558)
authorDavid Wrighton <davidwr@microsoft.com>
Tue, 2 Feb 2021 00:21:48 +0000 (16:21 -0800)
committerGitHub <noreply@github.com>
Tue, 2 Feb 2021 00:21:48 +0000 (16:21 -0800)
commitafa50f99d8dc750c17419f5bb4209409508aaa53
treeba76752f8025f3684f367e71e1ab44e81f7de83f
parent35f4dad52e99614556793ff31b43cb50d99c4050
Pgo phase3 (#47558)

- Fix class type probes (the increment of the count wasn't correct)
- Use the 64bit integer encoders for all the pgo data
- New section for R2R PE Files containing instrumentation data
- R2RDump functionality to display all the data embedded in the file
- Enable BBOPT for optimized builds in a more unconditional fashion

Future PGO work will include
- Move Pgo type handle histogram processing into JIT (which will make type guessing work in crossgen2 as well as in the runtime)
- Triggers for controlling Pgo data extraction
- Size control for pgo instrumentation data

With this checkin, the feature is functional from a crossgen2.exe point of view, but its not polished, and it cannot be used from the Crossgen2 sdk integration yet (as the sdk does not have the ability to pass an extra pair of arguments to the compiler.
32 files changed:
src/coreclr/inc/corjit.h
src/coreclr/inc/pgo_formatprocessing.h
src/coreclr/inc/readytorun.h
src/coreclr/tools/Common/Internal/NativeFormat/NativeFormatWriter.cs
src/coreclr/tools/Common/Internal/Runtime/ModuleHeaders.cs
src/coreclr/tools/Common/Pgo/TypeSystemEntityOrUnknown.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRun/InstrumentationDataTableNode.cs [new file with mode: 0644]
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRunCodegenNodeFactory.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ProfileData.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunCodegenCompilation.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/ReadyToRunCodegenCompilationBuilder.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/ILCompiler.Reflection.ReadyToRun.csproj
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/PgoInfo.cs [new file with mode: 0644]
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/PgoInfoKey.cs [new file with mode: 0644]
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/ReadyToRunMethod.cs
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/ReadyToRunReader.cs
src/coreclr/tools/aot/crossgen2/CommandLineOptions.cs
src/coreclr/tools/aot/crossgen2/Program.cs
src/coreclr/tools/aot/crossgen2/Properties/Resources.resx
src/coreclr/tools/dotnet-pgo/dotnet-pgo.csproj
src/coreclr/tools/r2rdump/CommandLineOptions.cs
src/coreclr/tools/r2rdump/R2RDump.cs
src/coreclr/tools/r2rdump/TextDumper.cs
src/coreclr/vm/jithelpers.cpp
src/coreclr/vm/jitinterface.cpp
src/coreclr/vm/jitinterface.h
src/coreclr/vm/nativeimage.cpp
src/coreclr/vm/pgo.cpp
src/coreclr/vm/pgo.h
src/coreclr/vm/readytoruninfo.cpp
src/coreclr/vm/readytoruninfo.h