You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow JIT to know if dynamic pgo is active (#101575)
When dynamic PGO is active we would like for all methods to have some
profile data, so we don't have to handle a mixture of profiled and unprofiled
methods during or after inlining.
But to reduce profiling overhead, the JIT will not instrument methods that have
straight-line control flow, or flow where all branches lead to throws (aka
"minimal profiling"). When the JIT tries to recover profile data for these methods
it won't get any data back. SO there is a fairly high volume of these profiled/unprofiled
mixtures today and they lead to various poor decisions in the JIT.
This change enables the JIT to see if dynamic PGO is active. The JIT does not yet
do anything with the information. A subsequent change will have the JIT synthesize
data for methods with no profile data in this case.
We could also solve this by creating a placeholder PGO schema for theswith no data, but it seems
simpler and less resource intensive to have the runtime tell the JIT that dynamic PGO
is active.
This also changes the JIT GUID for the new API surface.
Contributes to #93020.
PgoInstrumentationSchema **pSchema, // pointer to the schema table which describes the instrumentation results (pointer will not remain valid after jit completes)
1948
1948
uint32_t * pCountSchemaItems, // pointer to the count schema items
1949
1949
uint8_t ** pInstrumentationData, // pointer to the actual instrumentation data (pointer will not remain valid after jit completes)
0 commit comments