Spanning tree instrumentation (#47959)
authorAndy Ayers <andya@microsoft.com>
Tue, 9 Feb 2021 01:59:12 +0000 (17:59 -0800)
committerGitHub <noreply@github.com>
Tue, 9 Feb 2021 01:59:12 +0000 (17:59 -0800)
commit95f8f0040e0fadf3d16a9b0f82add1670ff82c10
tree7329f967d111ef525fd5a542b1910d0eed3f7912
parent8aa1f58af5b98647d0f97bfda4d745f38616206d
Spanning tree instrumentation (#47959)

Add a new instrumentation mode that only instruments a subset of the edges in
the control flow graph. This reduces the total number of counters and so has
less compile time and runtime overhead than instrumenting every block.

Add a matching count reconstruction algorithm that recovers the missing edge
counts and all block counts.

See #46882 for more details on this approach.

Also in runtime pgo support, add the header offset to the copy source.
This fixes #47930.
13 files changed:
eng/pipelines/common/templates/runtimes/run-test-job.yml
src/coreclr/inc/corjit.h
src/coreclr/jit/block.h
src/coreclr/jit/compiler.cpp
src/coreclr/jit/compiler.h
src/coreclr/jit/compphases.h
src/coreclr/jit/fgbasic.cpp
src/coreclr/jit/fgprofile.cpp
src/coreclr/jit/jitconfigvalues.h
src/coreclr/jit/phase.cpp
src/coreclr/tools/Common/Pgo/PgoFormat.cs
src/coreclr/vm/pgo.cpp
src/tests/Common/testenvironment.proj