Pgo phase2 (#47055)
authorDavid Wrighton <davidwr@microsoft.com>
Wed, 27 Jan 2021 03:48:37 +0000 (19:48 -0800)
committerGitHub <noreply@github.com>
Wed, 27 Jan 2021 03:48:37 +0000 (19:48 -0800)
commit6857ad17ae7d2e0f2c17cf6cfadbe8e927b35764
treec4bb3fd799fee8e128b8de0e9e50e2380a2df798
parentfd0d3b76d8169c1a9539b299f09f2786133d0ff1
Pgo phase2 (#47055)

Funnel PGO instrumentation data from runtime to crossgen2

- Representation of instrumentation data within crossgen2 and dotnet-pgo
- New uncompressed mibc format for easier debugging/faster processing
- Storage of instrumentation data in mibc file
- Parser for instrumentation data to load from mibc file
- Translation of crossgen2 in memory representation of instrumentation data from managed form to jit

Future PGO work will include
- Instrumentation data storage and extraction from R2R files
- 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
22 files changed:
src/coreclr/inc/corjit.h
src/coreclr/inc/eventtracebase.h
src/coreclr/inc/pgo_formatprocessing.h
src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs
src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs
src/coreclr/tools/Common/Pgo/PgoFormat.cs [new file with mode: 0644]
src/coreclr/tools/Common/Pgo/TypeSystemEntityOrUnknown.cs [new file with mode: 0644]
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/IBC/IBCProfileParser.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/IBC/MIbcProfileParser.cs
src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj
src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/PEReaderExtensions.cs
src/coreclr/tools/aot/ILCompiler.Reflection.ReadyToRun/ReadyToRunReader.cs
src/coreclr/tools/dotnet-pgo/Program.cs
src/coreclr/tools/dotnet-pgo/TypeSystemMetadataEmitter.cs
src/coreclr/tools/dotnet-pgo/dotnet-pgo.csproj
src/coreclr/vm/ceemain.cpp
src/coreclr/vm/eventtrace.cpp
src/coreclr/vm/pgo.cpp