Fail with Trap in Instance::new() instead of Error (#683)
This commit is contained in:
@@ -96,6 +96,7 @@ 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,7 @@
|
||||
use std::cell::Cell;
|
||||
|
||||
use crate::r#ref::HostRef;
|
||||
use crate::Trap;
|
||||
use crate::TrapInfo;
|
||||
use wasmtime_environ::ir::{SourceLoc, TrapCode};
|
||||
use wasmtime_environ::TrapInformation;
|
||||
use wasmtime_jit::trampoline::binemit;
|
||||
@@ -10,10 +10,10 @@ use wasmtime_jit::trampoline::binemit;
|
||||
pub const API_TRAP_CODE: TrapCode = TrapCode::User(13);
|
||||
|
||||
thread_local! {
|
||||
static RECORDED_API_TRAP: Cell<Option<HostRef<Trap>>> = Cell::new(None);
|
||||
static RECORDED_API_TRAP: Cell<Option<HostRef<TrapInfo>>> = Cell::new(None);
|
||||
}
|
||||
|
||||
pub fn record_api_trap(trap: HostRef<Trap>) {
|
||||
pub fn record_api_trap(trap: HostRef<TrapInfo>) {
|
||||
RECORDED_API_TRAP.with(|data| {
|
||||
let trap = Cell::new(Some(trap));
|
||||
data.swap(&trap);
|
||||
@@ -24,7 +24,7 @@ pub fn record_api_trap(trap: HostRef<Trap>) {
|
||||
});
|
||||
}
|
||||
|
||||
pub fn take_api_trap() -> Option<HostRef<Trap>> {
|
||||
pub fn take_api_trap() -> Option<HostRef<TrapInfo>> {
|
||||
RECORDED_API_TRAP.with(|data| data.take())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user