|
Wasmtime
|
Wasmtime APIs for WebAssembly exception objects. More...
#include <wasmtime/conf.h>#include <wasm.h>#include <wasmtime/error.h>#include <wasmtime/store.h>#include <wasmtime/tag.h>#include <wasmtime/val.h>Go to the source code of this file.
Typedefs | |
| typedef struct wasmtime_exn | wasmtime_exn_t |
| An opaque type representing a WebAssembly exception object. More... | |
Functions | |
| WASM_API_EXTERN void | wasmtime_exn_delete (wasmtime_exn_t *exn) |
| Deletes a wasmtime_exn_t. | |
| WASM_API_EXTERN wasmtime_error_t * | wasmtime_exn_new (wasmtime_context_t *store, const wasmtime_tag_t *tag, const wasmtime_val_t *fields, size_t nfields, wasmtime_exn_t **exn_ret) |
| Creates a new exception object. More... | |
| WASM_API_EXTERN wasmtime_error_t * | wasmtime_exn_tag (wasmtime_context_t *store, const wasmtime_exn_t *exn, wasmtime_tag_t *tag_ret) |
| Returns the tag associated with this exception. More... | |
| WASM_API_EXTERN size_t | wasmtime_exn_field_count (wasmtime_context_t *store, const wasmtime_exn_t *exn) |
| Returns the number of fields in this exception. More... | |
| WASM_API_EXTERN wasmtime_error_t * | wasmtime_exn_field (wasmtime_context_t *store, const wasmtime_exn_t *exn, size_t index, wasmtime_val_t *val_ret) |
| Reads a field value from this exception by index. More... | |
| WASM_API_EXTERN wasm_trap_t * | wasmtime_context_set_exception (wasmtime_context_t *store, wasmtime_exn_t *exn) |
| Sets the pending exception on the store and returns a trap. More... | |
| WASM_API_EXTERN bool | wasmtime_context_take_exception (wasmtime_context_t *store, wasmtime_exn_t **exn_ret) |
| Takes the pending exception from the store, if any. More... | |
| WASM_API_EXTERN bool | wasmtime_context_has_exception (wasmtime_context_t *store) |
| Tests whether there is a pending exception on the store. More... | |
Wasmtime APIs for WebAssembly exception objects.
Exception objects carry a tag and a set of field values. They are allocated on the GC heap within a store.
To throw an exception from a host function implemented via the C API:
wasmtime_trap_new).The runtime will propagate the exception through WebAssembly try_table/catch blocks.
When a call to a WebAssembly function (e.g. via wasmtime_func_call) returns a trap, check for a pending exception:
An opaque type representing a WebAssembly exception object.
Exception objects are allocated on the GC heap and referenced through this handle. The handle is owned by the caller and must be freed with wasmtime_exn_delete.
| WASM_API_EXTERN bool wasmtime_context_has_exception | ( | wasmtime_context_t * | store | ) |
Tests whether there is a pending exception on the store.
| store | the store context |
| WASM_API_EXTERN wasm_trap_t * wasmtime_context_set_exception | ( | wasmtime_context_t * | store, |
| wasmtime_exn_t * | exn | ||
| ) |
Sets the pending exception on the store and returns a trap.
This transfers ownership of exn to the store. After this call, the caller must not use or free exn.
Returns a wasm_trap_t that the host callback MUST return to signal to the Wasm runtime that an exception was thrown. The caller owns the returned trap.
| store | the store context |
| exn | the exception to throw (ownership transferred) |
| WASM_API_EXTERN bool wasmtime_context_take_exception | ( | wasmtime_context_t * | store, |
| wasmtime_exn_t ** | exn_ret | ||
| ) |
Takes the pending exception from the store, if any.
If there is a pending exception, removes it from the store and returns it. The caller owns the returned pointer and must free it with wasmtime_exn_delete.
| store | the store context |
| exn_ret | on success, set to the exception (caller-owned) |
| WASM_API_EXTERN wasmtime_error_t * wasmtime_exn_field | ( | wasmtime_context_t * | store, |
| const wasmtime_exn_t * | exn, | ||
| size_t | index, | ||
| wasmtime_val_t * | val_ret | ||
| ) |
Reads a field value from this exception by index.
| store | the store context |
| exn | the exception to query |
| index | the field index (0-based) |
| val_ret | on success, filled with the field value (caller-owned on return). |
| WASM_API_EXTERN size_t wasmtime_exn_field_count | ( | wasmtime_context_t * | store, |
| const wasmtime_exn_t * | exn | ||
| ) |
Returns the number of fields in this exception.
| store | the store context |
| exn | the exception to query |
| WASM_API_EXTERN wasmtime_error_t * wasmtime_exn_new | ( | wasmtime_context_t * | store, |
| const wasmtime_tag_t * | tag, | ||
| const wasmtime_val_t * | fields, | ||
| size_t | nfields, | ||
| wasmtime_exn_t ** | exn_ret | ||
| ) |
Creates a new exception object.
| store | the store context |
| tag | the tag to associate with this exception |
| fields | pointer to an array of field values matching the tag's payload signature |
| nfields | the number of elements in fields |
| exn_ret | on success, set to the newly allocated exception. The caller owns the returned pointer and must free it with wasmtime_exn_delete. |
| WASM_API_EXTERN wasmtime_error_t * wasmtime_exn_tag | ( | wasmtime_context_t * | store, |
| const wasmtime_exn_t * | exn, | ||
| wasmtime_tag_t * | tag_ret | ||
| ) |
Returns the tag associated with this exception.
| store | the store context |
| exn | the exception to query |
| tag_ret | on success, filled with the exception's tag |