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 CompactUnwind,
39}
40
41#[allow(missing_docs)]
43pub trait CompiledFunctionUnwindInfoLike<'a> {
44 fn get(&'a self) -> CompiledFunctionUnwindInfoReference<'a>;
45}
46
47impl<'a> CompiledFunctionUnwindInfoLike<'a> for CompiledFunctionUnwindInfo {
48 fn get(&'a self) -> CompiledFunctionUnwindInfoReference<'a> {
49 match self {
50 Self::WindowsX64(v) => CompiledFunctionUnwindInfoReference::WindowsX64(v.as_ref()),
51 Self::Dwarf => CompiledFunctionUnwindInfoReference::Dwarf,
52 }
53 }
54}
55
56impl<'a> CompiledFunctionUnwindInfoLike<'a> for ArchivedCompiledFunctionUnwindInfo {
57 fn get(&'a self) -> CompiledFunctionUnwindInfoReference<'a> {
58 match self {
59 Self::WindowsX64(v) => CompiledFunctionUnwindInfoReference::WindowsX64(v.as_ref()),
60 Self::Dwarf => CompiledFunctionUnwindInfoReference::Dwarf,
61 }
62 }
63}