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
- Adds a new interal setting `EXCEPTION_HANDLING` for the new wasm
exception handling, and a new option `-fwasm-exceptions`. Setting
`-fwasm-exceptions` sets `EXCEPTION_HANDLING` setting.
- `NoExceptLibrary` in system_libs.py now support three modes:
none, emscripten, and wasm. Libraries are built separately for each of
these modes according to options.
- Adds libcxxabi support. We share a lot of existing code with SjLj EH
because our LSDA table structure is similar to that of SjLj EH, but
there are some differenct parts. One important deviation of the wasm
EH from other schemes is wasm EH does not have two-phase unwinding.
Itanium-style two-phase unwinding typically consists of two phases:
search and cleanup. Wasm EH only does one phase unwinding that does
both search and cleanup together.
- This patch replaces `throw()` with `_THROW` in libcxxabi, which uses
`noexcept` keyword instead, because wasm EH's clang frontend does not
yet support exception specifications, such as `throw()`.
- Adds wasm libunwind implementation. Unlike other targets, we don't do
the actual stack unwinding in libunwind. Instead, it contains
target-specific method hooks that are used by libcxxabi. For example,
`_Unwind_RaiseException` in libunwind is called by `__cxa_throw` in
libcxxabi, whose call is generated when you use `throw` keyword in
C++.
- Adds `@with_both_exception_handling` decorator in test_core.py, which
runs the same test on both emscripten and the new wasm EH. Currently
many tests still fail on the wasm EH, so only passing tests are using
this decorator and failing ones are marked as TODOs. The reason for
most of the failures is the lack of support for exception
specification (such as `throw()`), as noted above.
Detailed info on toolchain convention of wasm EH handling is in
https://github.com/WebAssembly/tool-conventions/blob/master/EHScheme.md.
0 commit comments