-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mono][aot] Add support for deferred failures during AOT compilation #86554
[mono][aot] Add support for deferred failures during AOT compilation #86554
Conversation
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
…d_failure_callback
/azp run runtime-extra-platforms |
Azure Pipelines successfully started running 1 pipeline(s). |
The failures are known and shouldn't be related. |
This PR aims to introduce support for handling deferred failures that may occur during AOT compilation. When the AOT compiler encounters a failure during a class initialization that is not severe enough to require aborting the AOT compilation process, it will print a warning and proceed with the class layout setup and initialization. During runtime, if a class has a deferred failure, it will skip cached data and instead opt for the slower process of setting up the class layout at runtime, which allow exception handling during the execution.
In the AOT compilation phase, the function
set_failure_type(DEFERRED_FAILURE)
is called to set a failure callback that defers a failure for runtime execution. During JIT and AOT runtime, the functionset_failure_type(IMMEDIATE_FAILURE)
is called to set a failure callback which handles failures during the execution.Fixes #86327