Merge remote-tracking branch 'upstream/master' into poll
This commit is contained in:
@@ -42,7 +42,8 @@ impl Trap {
|
||||
if let Some(info) = wasmtime_runtime::jit_function_registry::find(pc) {
|
||||
wasm_trace.push(FrameInfo {
|
||||
func_index: info.func_index as u32,
|
||||
module_name: info.module_id.clone(),
|
||||
module_name: info.module_id.get().map(|s| s.to_string()),
|
||||
func_name: info.func_name.get().map(|s| s.to_string()),
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -87,6 +88,7 @@ impl std::error::Error for Trap {}
|
||||
pub struct FrameInfo {
|
||||
module_name: Option<String>,
|
||||
func_index: u32,
|
||||
func_name: Option<String>,
|
||||
}
|
||||
|
||||
impl FrameInfo {
|
||||
@@ -109,4 +111,8 @@ impl FrameInfo {
|
||||
pub fn module_name(&self) -> Option<&str> {
|
||||
self.module_name.as_deref()
|
||||
}
|
||||
|
||||
pub fn func_name(&self) -> Option<&str> {
|
||||
self.func_name.as_deref()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,8 +69,10 @@ fn test_trap_trace() -> Result<(), String> {
|
||||
assert_eq!(trace.len(), 2);
|
||||
assert_eq!(trace[0].module_name().unwrap(), "hello_mod");
|
||||
assert_eq!(trace[0].func_index(), 1);
|
||||
assert_eq!(trace[0].func_name(), Some("hello"));
|
||||
assert_eq!(trace[1].module_name().unwrap(), "hello_mod");
|
||||
assert_eq!(trace[1].func_index(), 0);
|
||||
assert_eq!(trace[1].func_name(), None);
|
||||
assert!(e.message().contains("unreachable"));
|
||||
|
||||
Ok(())
|
||||
@@ -114,9 +116,9 @@ fn test_trap_trace_cb() -> Result<(), String> {
|
||||
let trace = e.trace();
|
||||
assert_eq!(trace.len(), 2);
|
||||
assert_eq!(trace[0].module_name().unwrap(), "hello_mod");
|
||||
assert_eq!(trace[0].func_index(), 1);
|
||||
assert_eq!(trace[0].func_index(), 2);
|
||||
assert_eq!(trace[1].module_name().unwrap(), "hello_mod");
|
||||
assert_eq!(trace[1].func_index(), 0);
|
||||
assert_eq!(trace[1].func_index(), 1);
|
||||
assert_eq!(e.message(), "cb throw");
|
||||
|
||||
Ok(())
|
||||
@@ -149,6 +151,7 @@ fn test_trap_stack_overflow() -> Result<(), String> {
|
||||
for i in 0..trace.len() {
|
||||
assert_eq!(trace[i].module_name().unwrap(), "rec_mod");
|
||||
assert_eq!(trace[i].func_index(), 0);
|
||||
assert_eq!(trace[1].func_name(), Some("run"));
|
||||
}
|
||||
assert!(e.message().contains("call stack exhausted"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user