With PGO and (via #88749) one level of recursive inlining enabled, the jit sees
the recursive call made by `IntroSort` as an attractive inline candidate,
but it isn't.
Fixes #89106.
}
}
+ // IntroSort is recursive; block it from being inlined into itself as
+ // this is currenly not profitable.
+ [MethodImpl(MethodImplOptions.NoInlining)]
private void IntroSort(int lo, int hi, int depthLimit)
{
Debug.Assert(hi >= lo);
}
}
+ // IntroSort is recursive; block it from being inlined into itself as
+ // this is currenly not profitable.
+ [MethodImpl(MethodImplOptions.NoInlining)]
private void IntroSort(int lo, int hi, int depthLimit)
{
Debug.Assert(hi >= lo);
}
}
+ // IntroSort is recursive; block it from being inlined into itself as
+ // this is currenly not profitable.
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static void IntroSort(Span<T> keys, int depthLimit, Comparison<T> comparer)
{
Debug.Assert(!keys.IsEmpty);
j = t;
}
+ // IntroSort is recursive; block it from being inlined into itself as
+ // this is currenly not profitable.
+ [MethodImpl(MethodImplOptions.NoInlining)]
private static void IntroSort(Span<T> keys, int depthLimit)
{
Debug.Assert(!keys.IsEmpty);