26 lines
717 B
Rust
Raw Normal View History

2018-12-18 17:21:12 -08:00
use crate::webassembly::Instance;
2018-12-18 17:23:45 -08:00
use libc::{c_int, c_void};
2018-12-18 17:21:12 -08:00
/// setjmp
2018-12-18 17:23:45 -08:00
pub extern "C" fn __setjmp(env_addr: u32, instance: &mut Instance) -> c_int {
2018-12-18 17:21:12 -08:00
debug!("emscripten::__setjmp (setjmp)");
unsafe {
let env = instance.memory_offset_addr(0, env_addr as usize) as *mut c_void;
setjmp(env)
}
}
/// longjmp
2018-12-18 17:23:45 -08:00
pub extern "C" fn __longjmp(env_addr: u32, val: c_int, instance: &mut Instance) -> ! {
2018-12-18 17:21:12 -08:00
debug!("emscripten::__longjmp (longjmp) {}", val);
unsafe {
let env = instance.memory_offset_addr(0, env_addr as usize) as *mut c_void;
longjmp(env, val)
};
}
extern "C" {
fn setjmp(env: *mut c_void) -> c_int;
fn longjmp(env: *mut c_void, val: c_int) -> !;
}