Remove another thread local in instance.rs (#862)
* Remove another thread local in `instance.rs` This commit removes another usage of `thread_local!` in the continued effort to centralize all thread-local state per-call (or basically state needed for traps) in one location. This removal is targeted at the support for custom signal handlers on instances, removing the previous stack of instances with instead a linked list of instances. The `with_signals_on` method is no longer necessary (since it was always called anyway) and is inferred from the first `vmctx` argument of the entrypoints into wasm. These functions establish a linked list of instances on the stack, if needed, to handle signals when they happen. This involved some refactoring where some C++ glue was moved into Rust, so now Rust handles a bit more of the signal handling logic. * Update some inline docs about `HandleTrap`
This commit is contained in:
@@ -13,18 +13,12 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// Record the Trap code and wasm bytecode offset in TLS somewhere
|
||||
void* RecordTrap(const uint8_t* pc, bool reset_guard_page);
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include <windows.h>
|
||||
#include <winternl.h>
|
||||
bool InstanceSignalHandler(LPEXCEPTION_POINTERS);
|
||||
#elif defined(USE_APPLE_MACH_PORTS)
|
||||
bool InstanceSignalHandler(int, siginfo_t *, void *);
|
||||
void* HandleTrap(const uint8_t*, LPEXCEPTION_POINTERS);
|
||||
#else
|
||||
#include <sys/ucontext.h>
|
||||
bool InstanceSignalHandler(int, siginfo_t *, ucontext_t *);
|
||||
void* HandleTrap(const uint8_t*, int, siginfo_t *, void *);
|
||||
#endif
|
||||
|
||||
void Unwind(void*);
|
||||
|
||||
Reference in New Issue
Block a user