wasmer_compiler/types/
unwind.rs1use crate::lib::std::vec::Vec;
9use rkyv::{Archive, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize};
10#[cfg(feature = "enable-serde")]
11use serde::{Deserialize, Serialize};
12
13#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
21#[cfg_attr(feature = "artifact-size", derive(loupe::MemoryUsage))]
22#[derive(RkyvSerialize, RkyvDeserialize, Archive, Debug, Clone, PartialEq, Eq)]
23#[rkyv(derive(Debug))]
24pub enum CompiledFunctionUnwindInfo {
25 WindowsX64(Vec<u8>),
27
28 Dwarf,
30}
31
32#[allow(missing_docs)]
34#[derive(Debug, Clone, PartialEq, Eq)]
35pub enum CompiledFunctionUnwindInfoReference<'a> {
36 WindowsX64(&'a [u8]),
37 Dwarf,
38}
39
40#[allow(missing_docs)]
42pub trait CompiledFunctionUnwindInfoLike<'a> {
43 fn get(&'a self) -> CompiledFunctionUnwindInfoReference<'a>;
44}
45
46impl<'a> CompiledFunctionUnwindInfoLike<'a> for CompiledFunctionUnwindInfo {
47 fn get(&'a self) -> CompiledFunctionUnwindInfoReference<'a> {
48 match self {
49 Self::WindowsX64(v) => CompiledFunctionUnwindInfoReference::WindowsX64(v.as_ref()),
50 Self::Dwarf => CompiledFunctionUnwindInfoReference::Dwarf,
51 }
52 }
53}
54
55impl<'a> CompiledFunctionUnwindInfoLike<'a> for ArchivedCompiledFunctionUnwindInfo {
56 fn get(&'a self) -> CompiledFunctionUnwindInfoReference<'a> {
57 match self {
58 Self::WindowsX64(v) => CompiledFunctionUnwindInfoReference::WindowsX64(v.as_ref()),
59 Self::Dwarf => CompiledFunctionUnwindInfoReference::Dwarf,
60 }
61 }
62}