Initial reorg.
This is largely the same as #305, but updated for the current tree.
This commit is contained in:
37
crates/runtime/signalhandlers/Trampolines.cpp
Normal file
37
crates/runtime/signalhandlers/Trampolines.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
#include <setjmp.h>
|
||||
|
||||
#include "SignalHandlers.hpp"
|
||||
|
||||
extern "C"
|
||||
int WasmtimeCallTrampoline(void *vmctx, void (*body)(void*, void*), void *args) {
|
||||
jmp_buf buf;
|
||||
void *volatile prev;
|
||||
if (setjmp(buf) != 0) {
|
||||
LeaveScope(prev);
|
||||
return 0;
|
||||
}
|
||||
prev = EnterScope(&buf);
|
||||
body(vmctx, args);
|
||||
LeaveScope(prev);
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int WasmtimeCall(void *vmctx, void (*body)(void*)) {
|
||||
jmp_buf buf;
|
||||
void *volatile prev;
|
||||
if (setjmp(buf) != 0) {
|
||||
LeaveScope(prev);
|
||||
return 0;
|
||||
}
|
||||
prev = EnterScope(&buf);
|
||||
body(vmctx);
|
||||
LeaveScope(prev);
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
void Unwind() {
|
||||
jmp_buf *buf = (jmp_buf*) GetScope();
|
||||
longjmp(*buf, 1);
|
||||
}
|
||||
Reference in New Issue
Block a user