Simplify the implementation of new asynchronous exception semantics#19
Merged
mshinwell merged 3 commits intomshinwell:async-exns-only-breakfrom Oct 11, 2022
Merged
Conversation
- Use a flag in Caml_state to indicate whether an async exception is
being raised, removing the need for two versions of caml_start_program
- Use the same flag mechanism to distinguish async exceptions on both
bytecode and native code
- Check that only Break may be raised from async callbacks at the point
of *raising*, rather than at the point of running the callback
- No longer propagate Stack_overflow from async callbacks to the main
program
- Simplify raising logic by removing prepare_for_raise, as there is no
longer a need to carefully avoid caml_raise recursion (Now, caml_raise
may trigger callbacks, which may trigger caml_raise_async, which can
trigger no further work)
- Revert a change to setsigmask behaviour in interp.c
- caml_raise_out_of_memory_fatal renamed to caml_fatal_out_of_memory,
and is always a fatal error on both bytecode and native
mshinwell
approved these changes
Oct 11, 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Use a flag in Caml_state to indicate whether an async exception is
being raised, removing the need for two versions of caml_start_program
Use the same flag mechanism to distinguish async exceptions on both
bytecode and native code
Check that only Break may be raised from async callbacks at the point
of raising, rather than at the point of running the callback
No longer propagate Stack_overflow from async callbacks to the main
program
Simplify raising logic by removing prepare_for_raise, as there is no
longer a need to carefully avoid caml_raise recursion (Now, caml_raise
may trigger callbacks, which may trigger caml_raise_async, which can
trigger no further work)
Revert a change to setsigmask behaviour in interp.c
caml_raise_out_of_memory_fatal renamed to caml_fatal_out_of_memory,
and is always a fatal error on both bytecode and native