wasmtime_jit/
demangling.rs

1//! Helpers for demangling function names.
2
3/// Demangles a single function name into a user-readable form.
4///
5/// Currently supported: Rust/C/C++ function names.
6pub fn demangle_function_name(writer: &mut impl std::fmt::Write, name: &str) -> std::fmt::Result {
7    if let Ok(demangled) = rustc_demangle::try_demangle(name) {
8        write!(writer, "{}", demangled)
9    } else if let Ok(demangled) = cpp_demangle::Symbol::new(name) {
10        write!(writer, "{}", demangled)
11    } else {
12        write!(writer, "{}", name)
13    }
14}
15
16/// Demangles a function name if it's provided, or returns a unified representation based on the
17/// function index otherwise.
18pub fn demangle_function_name_or_index(
19    writer: &mut impl std::fmt::Write,
20    name: Option<&str>,
21    func_id: usize,
22) -> std::fmt::Result {
23    match name {
24        Some(name) => demangle_function_name(writer, name),
25        None => write!(writer, "<wasm function {}>", func_id),
26    }
27}