[release/9.0-staging] [mono][mini] Disable inlining if we encounter class initialization failure #112005
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #111754 to release/9.0-staging
This adds on top of #110271, which proved insufficient during validation of customer app for February NET9 service release.
Customer Impact
AOT of some assemblies can lead to compilation crashes, on iOS for example. This would force users to use interpreter instead.
Regression
Regression introduced in .NET9.
Testing
Tested with sample application provided by customer.
Risk
Low. In rare cases, when typeload exception was detected during compile time, we were emitting code to throw this exception at runtime (this was behavior introduced in net9). This functionality didn't work correctly when the code was emitted as part of an inlined method. This fix takes a conservative approach by disabling inlining for these methods (which we shouldn't really do even if the codegen were correct), reusing existing functionality.