Coverage Report

Created: 2026-01-17 07:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wasmi/crates/ir/src/decode/mod.rs
Line
Count
Source
1
#![allow(non_camel_case_types)]
2
3
//! Definitions and utilities to decode encoded byte streams.
4
5
mod op;
6
7
use self::op::{
8
    BinaryOp,
9
    CmpBranchOp,
10
    CmpSelectOp,
11
    LoadOp_Si,
12
    LoadOp_Ss,
13
    LoadOpMem0Offset16_Ss,
14
    StoreOp_I,
15
    StoreOp_S,
16
    StoreOpMem0Offset16_S,
17
    TableGet,
18
    TableSet,
19
    UnaryOp,
20
};
21
#[cfg(feature = "simd")]
22
use self::op::{
23
    StoreLaneOp_S,
24
    StoreLaneOpMem0Offset16_S,
25
    TernaryOp,
26
    V128ExtractLaneOp,
27
    V128LoadLaneOp_Ss,
28
    V128LoadLaneOpMem0Offset16_Ss,
29
    V128ReplaceLaneOp,
30
};
31
#[cfg(feature = "simd")]
32
use crate::core::simd::ImmLaneIdx;
33
use crate::{
34
    Address,
35
    BlockFuel,
36
    BoundedSlotSpan,
37
    BranchOffset,
38
    BranchTableTarget,
39
    FixedSlotSpan,
40
    Offset16,
41
    OpCode,
42
    Sign,
43
    Slot,
44
    SlotSpan,
45
    core::TrapCode,
46
    index::{Data, Elem, Func, FuncType, Global, InternalFunc, Memory, Table},
47
};
48
use core::{
49
    error::Error as CoreError,
50
    fmt,
51
    mem::{self, MaybeUninit},
52
    num::NonZero,
53
};
54
55
/// Types that can be used to decode types implementing [`Decode`].
56
pub trait Decoder {
57
    /// Reads enough bytes from `self` to populate `buffer`.
58
    fn read_bytes(&mut self, buffer: &mut [u8]) -> Result<(), DecodeError>;
59
}
60
61
/// An error that may be returned when decoding items.
62
#[derive(Debug, Copy, Clone)]
63
pub enum DecodeError {
64
    /// The decoder ran out of bytes.
65
    OutOfBytes,
66
    /// The decoder found an invalid bit pattern.
67
    InvalidBitPattern,
68
}
69
70
impl CoreError for DecodeError {}
71
impl fmt::Display for DecodeError {
72
0
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
73
0
        let s = match self {
74
0
            DecodeError::OutOfBytes => "ran out of bytes to decode",
75
0
            DecodeError::InvalidBitPattern => "encountered invalid bit pattern",
76
        };
77
0
        f.write_str(s)
78
0
    }
Unexecuted instantiation: <wasmi_ir::decode::DecodeError as core::fmt::Display>::fmt
Unexecuted instantiation: <wasmi_ir::decode::DecodeError as core::fmt::Display>::fmt
79
}
80
81
impl Decoder for &'_ [u8] {
82
9.18M
    fn read_bytes(&mut self, buffer: &mut [u8]) -> Result<(), DecodeError> {
83
9.18M
        let Some((bytes, rest)) = self.split_at_checked(buffer.len()) else {
84
0
            return Err(DecodeError::OutOfBytes);
85
        };
86
9.18M
        buffer.copy_from_slice(bytes);
87
9.18M
        *self = rest;
88
9.18M
        Ok(())
89
9.18M
    }
<&[u8] as wasmi_ir::decode::Decoder>::read_bytes
Line
Count
Source
82
522k
    fn read_bytes(&mut self, buffer: &mut [u8]) -> Result<(), DecodeError> {
83
522k
        let Some((bytes, rest)) = self.split_at_checked(buffer.len()) else {
84
0
            return Err(DecodeError::OutOfBytes);
85
        };
86
522k
        buffer.copy_from_slice(bytes);
87
522k
        *self = rest;
88
522k
        Ok(())
89
522k
    }
<&[u8] as wasmi_ir::decode::Decoder>::read_bytes
Line
Count
Source
82
8.66M
    fn read_bytes(&mut self, buffer: &mut [u8]) -> Result<(), DecodeError> {
83
8.66M
        let Some((bytes, rest)) = self.split_at_checked(buffer.len()) else {
84
0
            return Err(DecodeError::OutOfBytes);
85
        };
86
8.66M
        buffer.copy_from_slice(bytes);
87
8.66M
        *self = rest;
88
8.66M
        Ok(())
89
8.66M
    }
90
}
91
92
/// Types that can be decoded using a type that implements [`Decoder`].
93
pub trait Decode: Sized {
94
    /// Decodes `Self` via `decoder`.
95
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError>;
96
}
97
98
impl Decode for BoundedSlotSpan {
99
1.48M
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
100
1.48M
        let span = SlotSpan::decode(decoder)?;
101
1.48M
        let len = u16::decode(decoder)?;
102
1.48M
        Ok(Self::new(span, len))
103
1.48M
    }
<wasmi_ir::span::BoundedSlotSpan as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
99
1.20M
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
100
1.20M
        let span = SlotSpan::decode(decoder)?;
101
1.20M
        let len = u16::decode(decoder)?;
102
1.20M
        Ok(Self::new(span, len))
103
1.20M
    }
Unexecuted instantiation: <wasmi_ir::span::BoundedSlotSpan as wasmi_ir::decode::Decode>::decode::<_>
<wasmi_ir::span::BoundedSlotSpan as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
99
273k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
100
273k
        let span = SlotSpan::decode(decoder)?;
101
273k
        let len = u16::decode(decoder)?;
102
273k
        Ok(Self::new(span, len))
103
273k
    }
Unexecuted instantiation: <wasmi_ir::span::BoundedSlotSpan as wasmi_ir::decode::Decode>::decode::<_>
104
}
105
106
impl<const N: u16> Decode for FixedSlotSpan<N> {
107
4.41k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
108
4.41k
        let span = SlotSpan::decode(decoder)?;
109
4.41k
        Self::new(span).map_err(|_| DecodeError::InvalidBitPattern)
110
4.41k
    }
<wasmi_ir::span::FixedSlotSpan<2> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
107
3.37k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
108
3.37k
        let span = SlotSpan::decode(decoder)?;
109
3.37k
        Self::new(span).map_err(|_| DecodeError::InvalidBitPattern)
110
3.37k
    }
Unexecuted instantiation: <wasmi_ir::span::FixedSlotSpan<_> as wasmi_ir::decode::Decode>::decode::<_>
<wasmi_ir::span::FixedSlotSpan<2> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
107
1.03k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
108
1.03k
        let span = SlotSpan::decode(decoder)?;
109
1.03k
        Self::new(span).map_err(|_| DecodeError::InvalidBitPattern)
110
1.03k
    }
Unexecuted instantiation: <wasmi_ir::span::FixedSlotSpan<_> as wasmi_ir::decode::Decode>::decode::<_>
111
}
112
113
impl Decode for BranchTableTarget {
114
139
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
115
139
        let results = SlotSpan::decode(decoder)?;
116
139
        let offset = BranchOffset::decode(decoder)?;
117
139
        Ok(Self::new(results, offset))
118
139
    }
<wasmi_ir::primitive::BranchTableTarget as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
114
44
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
115
44
        let results = SlotSpan::decode(decoder)?;
116
44
        let offset = BranchOffset::decode(decoder)?;
117
44
        Ok(Self::new(results, offset))
118
44
    }
Unexecuted instantiation: <wasmi_ir::primitive::BranchTableTarget as wasmi_ir::decode::Decode>::decode::<_>
<wasmi_ir::primitive::BranchTableTarget as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
114
95
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
115
95
        let results = SlotSpan::decode(decoder)?;
116
95
        let offset = BranchOffset::decode(decoder)?;
117
95
        Ok(Self::new(results, offset))
118
95
    }
Unexecuted instantiation: <wasmi_ir::primitive::BranchTableTarget as wasmi_ir::decode::Decode>::decode::<_>
119
}
120
121
macro_rules! impl_decode_for_primitive {
122
    ( $($ty:ty),* $(,)? ) => {
123
        $(
124
            impl Decode for $ty {
125
272M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
272M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
272M
                    decoder.read_bytes(&mut bytes)?;
128
272M
                    Ok(Self::from_ne_bytes(bytes))
129
272M
                }
<u8 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
532k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
532k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
532k
                    decoder.read_bytes(&mut bytes)?;
128
532k
                    Ok(Self::from_ne_bytes(bytes))
129
532k
                }
<u16 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
88.0M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
88.0M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
88.0M
                    decoder.read_bytes(&mut bytes)?;
128
88.0M
                    Ok(Self::from_ne_bytes(bytes))
129
88.0M
                }
<u32 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
23.3M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
23.3M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
23.3M
                    decoder.read_bytes(&mut bytes)?;
128
23.3M
                    Ok(Self::from_ne_bytes(bytes))
129
23.3M
                }
<u64 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
4.56M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
4.56M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
4.56M
                    decoder.read_bytes(&mut bytes)?;
128
4.56M
                    Ok(Self::from_ne_bytes(bytes))
129
4.56M
                }
Unexecuted instantiation: <u64 as wasmi_ir::decode::Decode>::decode::<&[u8]>
<usize as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
115M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
115M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
115M
                    decoder.read_bytes(&mut bytes)?;
128
115M
                    Ok(Self::from_ne_bytes(bytes))
129
115M
                }
<i8 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
2.29k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
2.29k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
2.29k
                    decoder.read_bytes(&mut bytes)?;
128
2.29k
                    Ok(Self::from_ne_bytes(bytes))
129
2.29k
                }
<i16 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
332
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
332
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
332
                    decoder.read_bytes(&mut bytes)?;
128
332
                    Ok(Self::from_ne_bytes(bytes))
129
332
                }
<i32 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
19.4M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
19.4M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
19.4M
                    decoder.read_bytes(&mut bytes)?;
128
19.4M
                    Ok(Self::from_ne_bytes(bytes))
129
19.4M
                }
<i32 as wasmi_ir::decode::Decode>::decode::<&[u8]>
Line
Count
Source
125
522k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
522k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
522k
                    decoder.read_bytes(&mut bytes)?;
128
522k
                    Ok(Self::from_ne_bytes(bytes))
129
522k
                }
<i64 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
353k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
353k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
353k
                    decoder.read_bytes(&mut bytes)?;
128
353k
                    Ok(Self::from_ne_bytes(bytes))
129
353k
                }
<f32 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
122k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
122k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
122k
                    decoder.read_bytes(&mut bytes)?;
128
122k
                    Ok(Self::from_ne_bytes(bytes))
129
122k
                }
<f64 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
122k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
122k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
122k
                    decoder.read_bytes(&mut bytes)?;
128
122k
                    Ok(Self::from_ne_bytes(bytes))
129
122k
                }
Unexecuted instantiation: <u8 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u16 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u32 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u64 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u128 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <usize as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i8 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i16 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i32 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i64 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i128 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <isize as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <f32 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <f64 as wasmi_ir::decode::Decode>::decode::<_>
<u8 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
123k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
123k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
123k
                    decoder.read_bytes(&mut bytes)?;
128
123k
                    Ok(Self::from_ne_bytes(bytes))
129
123k
                }
<u16 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
2.42M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
2.42M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
2.42M
                    decoder.read_bytes(&mut bytes)?;
128
2.42M
                    Ok(Self::from_ne_bytes(bytes))
129
2.42M
                }
<u32 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
754k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
754k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
754k
                    decoder.read_bytes(&mut bytes)?;
128
754k
                    Ok(Self::from_ne_bytes(bytes))
129
754k
                }
<u64 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
1.18M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
1.18M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
1.18M
                    decoder.read_bytes(&mut bytes)?;
128
1.18M
                    Ok(Self::from_ne_bytes(bytes))
129
1.18M
                }
<u64 as wasmi_ir::decode::Decode>::decode::<&[u8]>
Line
Count
Source
125
8.55M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
8.55M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
8.55M
                    decoder.read_bytes(&mut bytes)?;
128
8.55M
                    Ok(Self::from_ne_bytes(bytes))
129
8.55M
                }
<usize as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
6.16M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
6.16M
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
6.16M
                    decoder.read_bytes(&mut bytes)?;
128
6.16M
                    Ok(Self::from_ne_bytes(bytes))
129
6.16M
                }
<i8 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
522
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
522
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
522
                    decoder.read_bytes(&mut bytes)?;
128
522
                    Ok(Self::from_ne_bytes(bytes))
129
522
                }
<i16 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
112
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
112
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
112
                    decoder.read_bytes(&mut bytes)?;
128
112
                    Ok(Self::from_ne_bytes(bytes))
129
112
                }
<i32 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
464k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
464k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
464k
                    decoder.read_bytes(&mut bytes)?;
128
464k
                    Ok(Self::from_ne_bytes(bytes))
129
464k
                }
<i32 as wasmi_ir::decode::Decode>::decode::<&[u8]>
Line
Count
Source
125
101k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
101k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
101k
                    decoder.read_bytes(&mut bytes)?;
128
101k
                    Ok(Self::from_ne_bytes(bytes))
129
101k
                }
<i64 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
29.8k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
29.8k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
29.8k
                    decoder.read_bytes(&mut bytes)?;
128
29.8k
                    Ok(Self::from_ne_bytes(bytes))
129
29.8k
                }
<f32 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
1.63k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
1.63k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
1.63k
                    decoder.read_bytes(&mut bytes)?;
128
1.63k
                    Ok(Self::from_ne_bytes(bytes))
129
1.63k
                }
<f64 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
125
4.30k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
126
4.30k
                    let mut bytes = [0_u8; mem::size_of::<$ty>()];
127
4.30k
                    decoder.read_bytes(&mut bytes)?;
128
4.30k
                    Ok(Self::from_ne_bytes(bytes))
129
4.30k
                }
Unexecuted instantiation: <u8 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u16 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u32 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u64 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <u128 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <usize as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i8 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i16 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i32 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i64 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <i128 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <isize as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <f32 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <f64 as wasmi_ir::decode::Decode>::decode::<_>
130
            }
131
        )*
132
    };
133
}
134
impl_decode_for_primitive!(
135
    u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize, f32, f64
136
);
137
138
macro_rules! impl_decode_using {
139
    ( $($ty:ty as $as:ty = $e:expr),* $(,)? ) => {
140
        $(
141
            impl Decode for $ty {
142
129M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
129M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
129M
                }
<wasmi_ir::primitive::Sign<f32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
18.7k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
18.7k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
18.7k
                }
<wasmi_ir::primitive::Sign<f64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
1.03k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
1.03k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
1.03k
                }
<wasmi_ir::span::SlotSpan as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
1.21M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
1.21M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
1.21M
                }
<bool as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
19.7k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
19.7k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
19.7k
                }
<wasmi_ir::primitive::Offset16 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
159k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
159k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
159k
                }
<wasmi_ir::primitive::BranchOffset as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
7.17M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
7.17M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
7.17M
                }
<wasmi_ir::primitive::BranchOffset as wasmi_ir::decode::Decode>::decode::<&[u8]>
Line
Count
Source
142
522k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
522k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
522k
                }
Unexecuted instantiation: <wasmi_ir::primitive::BlockFuel as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Unexecuted instantiation: <wasmi_ir::primitive::BlockFuel as wasmi_ir::decode::Decode>::decode::<&[u8]>
<wasmi_ir::index::Slot as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
86.0M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
86.0M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
86.0M
                }
<wasmi_ir::index::Func as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
341k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
341k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
341k
                }
<wasmi_ir::index::FuncType as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
3.03k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
3.03k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
3.03k
                }
<wasmi_ir::index::InternalFunc as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
1.17M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
1.17M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
1.17M
                }
<wasmi_ir::index::Global as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
15.2M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
15.2M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
15.2M
                }
<wasmi_ir::index::Memory as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
630k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
630k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
630k
                }
<wasmi_ir::index::Table as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
558k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
558k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
558k
                }
<wasmi_ir::index::Data as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
1.39M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
1.39M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
1.39M
                }
<wasmi_ir::index::Elem as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
1.81M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
1.81M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
1.81M
                }
Unexecuted instantiation: <wasmi_ir::primitive::Sign<f32> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::Sign<f64> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::span::SlotSpan as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <bool as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::Offset16 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::BranchOffset as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::BlockFuel as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Slot as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Func as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::FuncType as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::InternalFunc as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Global as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Memory as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Table as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Data as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Elem as wasmi_ir::decode::Decode>::decode::<_>
<wasmi_ir::primitive::Sign<f32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
32
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
32
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
32
                }
<wasmi_ir::primitive::Sign<f64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
64
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
64
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
64
                }
<wasmi_ir::span::SlotSpan as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
274k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
274k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
274k
                }
<bool as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
96
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
96
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
96
                }
<wasmi_ir::primitive::Offset16 as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
10.9k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
10.9k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
10.9k
                }
<wasmi_ir::primitive::BranchOffset as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
426k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
426k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
426k
                }
<wasmi_ir::primitive::BranchOffset as wasmi_ir::decode::Decode>::decode::<&[u8]>
Line
Count
Source
142
101k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
101k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
101k
                }
<wasmi_ir::primitive::BlockFuel as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
990k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
990k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
990k
                }
<wasmi_ir::primitive::BlockFuel as wasmi_ir::decode::Decode>::decode::<&[u8]>
Line
Count
Source
142
8.55M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
8.55M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
8.55M
                }
<wasmi_ir::index::Slot as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
2.03M
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
2.03M
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
2.03M
                }
<wasmi_ir::index::Func as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
14.2k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
14.2k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
14.2k
                }
<wasmi_ir::index::FuncType as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
1.14k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
1.14k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
1.14k
                }
<wasmi_ir::index::InternalFunc as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
259k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
259k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
259k
                }
<wasmi_ir::index::Global as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
208k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
208k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
208k
                }
<wasmi_ir::index::Memory as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
95.8k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
95.8k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
95.8k
                }
<wasmi_ir::index::Table as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
50.2k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
50.2k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
50.2k
                }
<wasmi_ir::index::Data as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
64.9k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
64.9k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
64.9k
                }
<wasmi_ir::index::Elem as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
142
90.8k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
143
90.8k
                    Ok($e(<$as as Decode>::decode(decoder)?))
144
90.8k
                }
Unexecuted instantiation: <wasmi_ir::primitive::Sign<f32> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::Sign<f64> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::span::SlotSpan as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <bool as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::Offset16 as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::BranchOffset as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::primitive::BlockFuel as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Slot as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Func as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::FuncType as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::InternalFunc as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Global as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Memory as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Table as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Data as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::index::Elem as wasmi_ir::decode::Decode>::decode::<_>
145
            }
146
        )*
147
    };
148
}
149
impl_decode_using! {
150
19.8k
    bool as u8 = |value| value != 0,
<bool as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
150
19.7k
    bool as u8 = |value| value != 0,
Unexecuted instantiation: <bool as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<bool as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
150
96
    bool as u8 = |value| value != 0,
Unexecuted instantiation: <bool as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
151
    Offset16 as u16 = Into::into,
152
    BranchOffset as i32 = Into::into,
153
    BlockFuel as u64 = Into::into,
154
    Slot as u16 = Into::into,
155
    Func as u32 = Into::into,
156
    FuncType as u32 = Into::into,
157
    InternalFunc as u32 = Into::into,
158
    Global as u32 = Into::into,
159
    Memory as u16 = Into::into,
160
    Table as u32 = Into::into,
161
    Data as u32 = Into::into,
162
    Elem as u32 = Into::into,
163
164
    Sign<f32> as bool = Sign::new,
165
    Sign<f64> as bool = Sign::new,
166
    SlotSpan as Slot = SlotSpan::new,
167
}
168
169
macro_rules! impl_decode_fallible_using {
170
    ( $($ty:ty as $as:ty = $e:expr),* $(,)? ) => {
171
        $(
172
            impl Decode for $ty {
173
                #[inline(always)]
174
384k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
384k
                    $e(<$as as Decode>::decode(decoder)?)
176
384k
                }
<wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
38.2k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
38.2k
                    $e(<$as as Decode>::decode(decoder)?)
176
38.2k
                }
<core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
13.1k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
13.1k
                    $e(<$as as Decode>::decode(decoder)?)
176
13.1k
                }
<core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
2.57k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
2.57k
                    $e(<$as as Decode>::decode(decoder)?)
176
2.57k
                }
<core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
33.3k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
33.3k
                    $e(<$as as Decode>::decode(decoder)?)
176
33.3k
                }
<core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
24.6k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
24.6k
                    $e(<$as as Decode>::decode(decoder)?)
176
24.6k
                }
<wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
172k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
172k
                    $e(<$as as Decode>::decode(decoder)?)
176
172k
                }
Unexecuted instantiation: <wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::opcode::OpCode as wasmi_ir::decode::Decode>::decode::<_>
<wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
10.1k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
10.1k
                    $e(<$as as Decode>::decode(decoder)?)
176
10.1k
                }
<core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
115
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
115
                    $e(<$as as Decode>::decode(decoder)?)
176
115
                }
<core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
755
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
755
                    $e(<$as as Decode>::decode(decoder)?)
176
755
                }
<core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
87
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
87
                    $e(<$as as Decode>::decode(decoder)?)
176
87
                }
<core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
110
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
110
                    $e(<$as as Decode>::decode(decoder)?)
176
110
                }
<wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
174
89.2k
                fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
175
89.2k
                    $e(<$as as Decode>::decode(decoder)?)
176
89.2k
                }
Unexecuted instantiation: <wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<_>
Unexecuted instantiation: <wasmi_ir::opcode::OpCode as wasmi_ir::decode::Decode>::decode::<_>
177
            }
178
        )*
179
    };
180
}
181
impl_decode_fallible_using! {
182
48.4k
    Address as u64 = |address| {
183
48.4k
        Address::try_from(address).map_err(|_| DecodeError::InvalidBitPattern)
184
48.4k
    },
<wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
182
38.2k
    Address as u64 = |address| {
183
38.2k
        Address::try_from(address).map_err(|_| DecodeError::InvalidBitPattern)
184
38.2k
    },
Unexecuted instantiation: <wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
182
10.1k
    Address as u64 = |address| {
183
10.1k
        Address::try_from(address).map_err(|_| DecodeError::InvalidBitPattern)
184
10.1k
    },
Unexecuted instantiation: <wasmi_ir::primitive::Address as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
185
13.2k
    NonZero<i32> as i32 = |value| {
186
13.2k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
187
13.2k
    },
<core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
185
13.1k
    NonZero<i32> as i32 = |value| {
186
13.1k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
187
13.1k
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
185
115
    NonZero<i32> as i32 = |value| {
186
115
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
187
115
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<i32> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
188
3.32k
    NonZero<i64> as i64 = |value| {
189
3.32k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
190
3.32k
    },
<core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
188
2.57k
    NonZero<i64> as i64 = |value| {
189
2.57k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
190
2.57k
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
188
755
    NonZero<i64> as i64 = |value| {
189
755
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
190
755
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<i64> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
191
33.4k
    NonZero<u32> as u32 = |value| {
192
33.4k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
193
33.4k
    },
<core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
191
33.3k
    NonZero<u32> as u32 = |value| {
192
33.3k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
193
33.3k
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
191
87
    NonZero<u32> as u32 = |value| {
192
87
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
193
87
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<u32> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
194
24.7k
    NonZero<u64> as u64 = |value| {
195
24.7k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
196
24.7k
    },
<core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
194
24.6k
    NonZero<u64> as u64 = |value| {
195
24.6k
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
196
24.6k
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
194
110
    NonZero<u64> as u64 = |value| {
195
110
        NonZero::new(value).ok_or(DecodeError::InvalidBitPattern)
196
110
    },
Unexecuted instantiation: <core::num::nonzero::NonZero<u64> as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
197
261k
    TrapCode as u8 = |code: u8| {
198
261k
        TrapCode::try_from(code).map_err(|_| DecodeError::InvalidBitPattern)
199
261k
    },
<wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
197
172k
    TrapCode as u8 = |code: u8| {
198
172k
        TrapCode::try_from(code).map_err(|_| DecodeError::InvalidBitPattern)
199
172k
    },
Unexecuted instantiation: <wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
<wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>::{closure#0}
Line
Count
Source
197
89.2k
    TrapCode as u8 = |code: u8| {
198
89.2k
        TrapCode::try_from(code).map_err(|_| DecodeError::InvalidBitPattern)
199
89.2k
    },
Unexecuted instantiation: <wasmi_core::trap::TrapCode as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
200
0
    OpCode as u16 = |code: u16| {
201
0
        OpCode::try_from(code).map_err(|_| DecodeError::InvalidBitPattern)
202
0
    }
Unexecuted instantiation: <wasmi_ir::opcode::OpCode as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
Unexecuted instantiation: <wasmi_ir::opcode::OpCode as wasmi_ir::decode::Decode>::decode::<_>::{closure#0}
203
}
204
205
impl<const N: usize, T: Decode> Decode for [T; N] {
206
445
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
207
445
        let mut array = <MaybeUninit<[T; N]>>::uninit();
208
        // Safety: we are going to decode and initialize all array items and won't read any.
209
445
        let items = unsafe { &mut *array.as_mut_ptr() };
210
7.56k
        for item in items {
211
7.12k
            *item = <T as Decode>::decode(decoder)?;
212
        }
213
        // Safety: we have decoded and thus initialized all array items.
214
445
        let array = unsafe { array.assume_init() };
215
445
        Ok(array)
216
445
    }
<[wasmi_core::simd::ImmLaneIdx<32>; 16] as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
206
3
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
207
3
        let mut array = <MaybeUninit<[T; N]>>::uninit();
208
        // Safety: we are going to decode and initialize all array items and won't read any.
209
3
        let items = unsafe { &mut *array.as_mut_ptr() };
210
51
        for item in items {
211
48
            *item = <T as Decode>::decode(decoder)?;
212
        }
213
        // Safety: we have decoded and thus initialized all array items.
214
3
        let array = unsafe { array.assume_init() };
215
3
        Ok(array)
216
3
    }
Unexecuted instantiation: <[_; _] as wasmi_ir::decode::Decode>::decode::<_>
<[wasmi_core::simd::ImmLaneIdx<32>; 16] as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
206
442
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
207
442
        let mut array = <MaybeUninit<[T; N]>>::uninit();
208
        // Safety: we are going to decode and initialize all array items and won't read any.
209
442
        let items = unsafe { &mut *array.as_mut_ptr() };
210
7.51k
        for item in items {
211
7.07k
            *item = <T as Decode>::decode(decoder)?;
212
        }
213
        // Safety: we have decoded and thus initialized all array items.
214
442
        let array = unsafe { array.assume_init() };
215
442
        Ok(array)
216
442
    }
Unexecuted instantiation: <[_; _] as wasmi_ir::decode::Decode>::decode::<_>
217
}
218
219
#[cfg(feature = "simd")]
220
impl<const N: u8> Decode for ImmLaneIdx<N> {
221
234k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
234k
        let byte = u8::decode(decoder)?;
223
234k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
234k
        Ok(lane)
225
234k
    }
<wasmi_core::simd::ImmLaneIdx<16> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
51.7k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
51.7k
        let byte = u8::decode(decoder)?;
223
51.7k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
51.7k
        Ok(lane)
225
51.7k
    }
<wasmi_core::simd::ImmLaneIdx<32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
48
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
48
        let byte = u8::decode(decoder)?;
223
48
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
48
        Ok(lane)
225
48
    }
<wasmi_core::simd::ImmLaneIdx<2> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
48.1k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
48.1k
        let byte = u8::decode(decoder)?;
223
48.1k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
48.1k
        Ok(lane)
225
48.1k
    }
<wasmi_core::simd::ImmLaneIdx<4> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
60.1k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
60.1k
        let byte = u8::decode(decoder)?;
223
60.1k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
60.1k
        Ok(lane)
225
60.1k
    }
<wasmi_core::simd::ImmLaneIdx<8> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
48.2k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
48.2k
        let byte = u8::decode(decoder)?;
223
48.2k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
48.2k
        Ok(lane)
225
48.2k
    }
Unexecuted instantiation: <wasmi_core::simd::ImmLaneIdx<_> as wasmi_ir::decode::Decode>::decode::<_>
<wasmi_core::simd::ImmLaneIdx<16> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
3.99k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
3.99k
        let byte = u8::decode(decoder)?;
223
3.99k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
3.99k
        Ok(lane)
225
3.99k
    }
<wasmi_core::simd::ImmLaneIdx<32> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
7.07k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
7.07k
        let byte = u8::decode(decoder)?;
223
7.07k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
7.07k
        Ok(lane)
225
7.07k
    }
<wasmi_core::simd::ImmLaneIdx<2> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
3.82k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
3.82k
        let byte = u8::decode(decoder)?;
223
3.82k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
3.82k
        Ok(lane)
225
3.82k
    }
<wasmi_core::simd::ImmLaneIdx<4> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
5.11k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
5.11k
        let byte = u8::decode(decoder)?;
223
5.11k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
5.11k
        Ok(lane)
225
5.11k
    }
<wasmi_core::simd::ImmLaneIdx<8> as wasmi_ir::decode::Decode>::decode::<<wasmi::engine::executor::handler::state::Ip>::decode::IpDecoder>
Line
Count
Source
221
5.84k
    fn decode<D: Decoder>(decoder: &mut D) -> Result<Self, DecodeError> {
222
5.84k
        let byte = u8::decode(decoder)?;
223
5.84k
        let lane = ImmLaneIdx::try_from(byte).map_err(|_| DecodeError::InvalidBitPattern)?;
224
5.84k
        Ok(lane)
225
5.84k
    }
Unexecuted instantiation: <wasmi_core::simd::ImmLaneIdx<_> as wasmi_ir::decode::Decode>::decode::<_>
226
}
227
228
include!(concat!(env!("OUT_DIR"), "/decode.rs"));