Remove unsafety from Trap API (#779)
* Remove unsafety from `Trap` API This commit removes the `unsafe impl Send` for `Trap` by removing the internal `HostRef` and leaving `HostRef` entirely as an implementation detail of the C API. cc #708 * Run rustfmt
This commit is contained in:
@@ -95,7 +95,6 @@ unsafe extern "C" fn stub_fn(vmctx: *mut VMContext, call_id: u32, values_vec: *m
|
||||
0
|
||||
}
|
||||
Err(trap) => {
|
||||
let trap = trap.trap_info_unchecked();
|
||||
record_api_trap(trap);
|
||||
1
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
use std::cell::Cell;
|
||||
|
||||
use crate::r#ref::HostRef;
|
||||
use crate::TrapInfo;
|
||||
use crate::Trap;
|
||||
use wasmtime_environ::ir::{SourceLoc, TrapCode};
|
||||
use wasmtime_environ::TrapInformation;
|
||||
use wasmtime_jit::trampoline::binemit;
|
||||
@@ -10,10 +9,10 @@ use wasmtime_jit::trampoline::binemit;
|
||||
pub const API_TRAP_CODE: TrapCode = TrapCode::User(13);
|
||||
|
||||
thread_local! {
|
||||
static RECORDED_API_TRAP: Cell<Option<HostRef<TrapInfo>>> = Cell::new(None);
|
||||
static RECORDED_API_TRAP: Cell<Option<Trap>> = Cell::new(None);
|
||||
}
|
||||
|
||||
pub fn record_api_trap(trap: HostRef<TrapInfo>) {
|
||||
pub fn record_api_trap(trap: Trap) {
|
||||
RECORDED_API_TRAP.with(|data| {
|
||||
let trap = Cell::new(Some(trap));
|
||||
data.swap(&trap);
|
||||
@@ -24,7 +23,7 @@ pub fn record_api_trap(trap: HostRef<TrapInfo>) {
|
||||
});
|
||||
}
|
||||
|
||||
pub fn take_api_trap() -> Option<HostRef<TrapInfo>> {
|
||||
pub fn take_api_trap() -> Option<Trap> {
|
||||
RECORDED_API_TRAP.with(|data| data.take())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user