Coverage Report

Created: 2024-10-16 07:58

/src/wasmer/lib/types/src/initializers.rs
Line
Count
Source (jump to first uncovered line)
1
use crate::indexes::{FunctionIndex, GlobalIndex, MemoryIndex, TableIndex};
2
use crate::lib::std::boxed::Box;
3
4
use enumset::__internal::EnumSetTypeRepr;
5
use rkyv::{Archive, CheckBytes, Deserialize as RkyvDeserialize, Serialize as RkyvSerialize};
6
#[cfg(feature = "enable-serde")]
7
use serde::{Deserialize, Serialize};
8
9
/// A WebAssembly table initializer.
10
84.5k
#[derive(Clone, Debug, Hash, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
<wasmer_types::initializers::TableInitializer as rkyv::Serialize<rkyv::ser::serializers::CompositeSerializer<rkyv::ser::serializers::alloc::AlignedSerializer<rkyv::util::aligned_vec::AlignedVec>, rkyv::ser::serializers::core::FallbackScratch<rkyv::ser::serializers::alloc::HeapScratch<4096>, rkyv::ser::serializers::alloc::AllocScratch>, rkyv::ser::serializers::alloc::SharedSerializeMap>>>::serialize
Line
Count
Source
10
84.5k
#[derive(Clone, Debug, Hash, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
Unexecuted instantiation: <wasmer_types::initializers::TableInitializer as rkyv::Serialize<rkyv::ser::serializers::CompositeSerializer<rkyv::ser::serializers::alloc::AlignedSerializer<rkyv::util::aligned_vec::AlignedVec>, rkyv::ser::serializers::core::FallbackScratch<rkyv::ser::serializers::alloc::HeapScratch<4096>, rkyv::ser::serializers::alloc::AllocScratch>, rkyv::ser::serializers::alloc::SharedSerializeMap>>>::serialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as rkyv::Deserialize<wasmer_types::initializers::TableInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as rkyv::Deserialize<wasmer_types::initializers::TableInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as rkyv::Deserialize<wasmer_types::initializers::TableInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as rkyv::Deserialize<wasmer_types::initializers::TableInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
<wasmer_types::initializers::TableInitializer as rkyv::Archive>::resolve
Line
Count
Source
10
84.5k
#[derive(Clone, Debug, Hash, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#3}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#2}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#1}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#0}
Unexecuted instantiation: <wasmer_types::initializers::TableInitializer as rkyv::Archive>::resolve
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#3}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#2}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#1}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedTableInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#0}
11
#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
12
#[cfg_attr(feature = "artifact-size", derive(loupe::MemoryUsage))]
13
#[archive_attr(derive(CheckBytes, Debug))]
14
pub struct TableInitializer {
15
    /// The index of a table to initialize.
16
    pub table_index: TableIndex,
17
    /// Optionally, a global variable giving a base index.
18
    pub base: Option<GlobalIndex>,
19
    /// The offset to add to the base.
20
    pub offset: usize,
21
    /// The values to write into the table elements.
22
    pub elements: Box<[FunctionIndex]>,
23
}
24
25
/// A memory index and offset within that memory where a data initialization
26
/// should be performed.
27
57.0k
#[derive(Clone, Debug, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
<wasmer_types::initializers::DataInitializerLocation as rkyv::Serialize<rkyv::ser::serializers::CompositeSerializer<rkyv::ser::serializers::alloc::AlignedSerializer<rkyv::util::aligned_vec::AlignedVec>, rkyv::ser::serializers::core::FallbackScratch<rkyv::ser::serializers::alloc::HeapScratch<4096>, rkyv::ser::serializers::alloc::AllocScratch>, rkyv::ser::serializers::alloc::SharedSerializeMap>>>::serialize
Line
Count
Source
27
57.0k
#[derive(Clone, Debug, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
Unexecuted instantiation: <wasmer_types::initializers::DataInitializerLocation as rkyv::Serialize<rkyv::ser::serializers::CompositeSerializer<rkyv::ser::serializers::alloc::AlignedSerializer<rkyv::util::aligned_vec::AlignedVec>, rkyv::ser::serializers::core::FallbackScratch<rkyv::ser::serializers::alloc::HeapScratch<4096>, rkyv::ser::serializers::alloc::AllocScratch>, rkyv::ser::serializers::alloc::SharedSerializeMap>>>::serialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as rkyv::Deserialize<wasmer_types::initializers::DataInitializerLocation, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as rkyv::Deserialize<wasmer_types::initializers::DataInitializerLocation, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as rkyv::Deserialize<wasmer_types::initializers::DataInitializerLocation, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as rkyv::Deserialize<wasmer_types::initializers::DataInitializerLocation, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
<wasmer_types::initializers::DataInitializerLocation as rkyv::Archive>::resolve
Line
Count
Source
27
57.0k
#[derive(Clone, Debug, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#2}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#1}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#0}
Unexecuted instantiation: <wasmer_types::initializers::DataInitializerLocation as rkyv::Archive>::resolve
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#2}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#1}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedDataInitializerLocation as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#0}
28
#[cfg_attr(feature = "artifact-size", derive(loupe::MemoryUsage))]
29
#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
30
#[archive_attr(derive(CheckBytes, Debug))]
31
pub struct DataInitializerLocation {
32
    /// The index of the memory to initialize.
33
    pub memory_index: MemoryIndex,
34
35
    /// Optionally a Global variable base to initialize at.
36
    pub base: Option<GlobalIndex>,
37
38
    /// A constant offset to initialize at.
39
    pub offset: usize,
40
}
41
42
/// Any struct that acts like a `DataInitializerLocation`.
43
#[allow(missing_docs)]
44
pub trait DataInitializerLocationLike {
45
    fn memory_index(&self) -> MemoryIndex;
46
    fn base(&self) -> Option<GlobalIndex>;
47
    fn offset(&self) -> usize;
48
}
49
50
impl DataInitializerLocationLike for &DataInitializerLocation {
51
0
    fn memory_index(&self) -> MemoryIndex {
52
0
        self.memory_index
53
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
54
55
0
    fn base(&self) -> Option<GlobalIndex> {
56
0
        self.base
57
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
58
59
0
    fn offset(&self) -> usize {
60
0
        self.offset
61
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
Unexecuted instantiation: <&wasmer_types::initializers::DataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
62
}
63
64
impl DataInitializerLocationLike for &ArchivedDataInitializerLocation {
65
0
    fn memory_index(&self) -> MemoryIndex {
66
0
        MemoryIndex::from_u32(self.memory_index.as_u32())
67
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::memory_index
68
69
0
    fn base(&self) -> Option<GlobalIndex> {
70
0
        match self.base {
71
0
            rkyv::option::ArchivedOption::None => None,
72
0
            rkyv::option::ArchivedOption::Some(base) => Some(GlobalIndex::from_u32(base.as_u32())),
73
        }
74
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::base
75
76
0
    fn offset(&self) -> usize {
77
0
        self.offset.to_usize()
78
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedDataInitializerLocation as wasmer_types::initializers::DataInitializerLocationLike>::offset
79
}
80
81
/// A data initializer for linear memory.
82
#[derive(Debug)]
83
#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
84
pub struct DataInitializer<'data> {
85
    /// The location where the initialization is to be performed.
86
    pub location: DataInitializerLocation,
87
88
    /// The initialization data.
89
    pub data: &'data [u8],
90
}
91
92
/// As `DataInitializer` but owning the data rather than
93
/// holding a reference to it
94
57.0k
#[derive(Debug, Clone, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
<wasmer_types::initializers::OwnedDataInitializer as rkyv::Serialize<rkyv::ser::serializers::CompositeSerializer<rkyv::ser::serializers::alloc::AlignedSerializer<rkyv::util::aligned_vec::AlignedVec>, rkyv::ser::serializers::core::FallbackScratch<rkyv::ser::serializers::alloc::HeapScratch<4096>, rkyv::ser::serializers::alloc::AllocScratch>, rkyv::ser::serializers::alloc::SharedSerializeMap>>>::serialize
Line
Count
Source
94
57.0k
#[derive(Debug, Clone, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
Unexecuted instantiation: <wasmer_types::initializers::OwnedDataInitializer as rkyv::Serialize<rkyv::ser::serializers::CompositeSerializer<rkyv::ser::serializers::alloc::AlignedSerializer<rkyv::util::aligned_vec::AlignedVec>, rkyv::ser::serializers::core::FallbackScratch<rkyv::ser::serializers::alloc::HeapScratch<4096>, rkyv::ser::serializers::alloc::AllocScratch>, rkyv::ser::serializers::alloc::SharedSerializeMap>>>::serialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as rkyv::Deserialize<wasmer_types::initializers::OwnedDataInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as rkyv::Deserialize<wasmer_types::initializers::OwnedDataInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as rkyv::Deserialize<wasmer_types::initializers::OwnedDataInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as rkyv::Deserialize<wasmer_types::initializers::OwnedDataInitializer, rkyv::de::deserializers::alloc::SharedDeserializeMap>>::deserialize
<wasmer_types::initializers::OwnedDataInitializer as rkyv::Archive>::resolve
Line
Count
Source
94
57.0k
#[derive(Debug, Clone, PartialEq, Eq, RkyvSerialize, RkyvDeserialize, Archive)]
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#1}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#0}
Unexecuted instantiation: <wasmer_types::initializers::OwnedDataInitializer as rkyv::Archive>::resolve
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#1}
Unexecuted instantiation: <wasmer_types::initializers::ArchivedOwnedDataInitializer as bytecheck::CheckBytes<rkyv::validation::validators::DefaultValidator>>::check_bytes::{closure#0}
95
#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
96
#[cfg_attr(feature = "artifact-size", derive(loupe::MemoryUsage))]
97
#[archive_attr(derive(CheckBytes, Debug))]
98
pub struct OwnedDataInitializer {
99
    /// The location where the initialization is to be performed.
100
    pub location: DataInitializerLocation,
101
102
    /// The initialization owned data.
103
    pub data: Box<[u8]>,
104
}
105
106
/// Any struct that acts like a `DataInitializer`.
107
#[allow(missing_docs)]
108
pub trait DataInitializerLike<'a> {
109
    type Location: DataInitializerLocationLike + Copy + 'a;
110
111
    fn location(&self) -> Self::Location;
112
    fn data(&self) -> &'a [u8];
113
}
114
115
impl OwnedDataInitializer {
116
    /// Creates a new `OwnedDataInitializer` from a `DataInitializer`.
117
66.0k
    pub fn new(borrowed: &DataInitializer<'_>) -> Self {
118
66.0k
        Self {
119
66.0k
            location: borrowed.location.clone(),
120
66.0k
            data: borrowed.data.to_vec().into_boxed_slice(),
121
66.0k
        }
122
66.0k
    }
<wasmer_types::initializers::OwnedDataInitializer>::new
Line
Count
Source
117
58.5k
    pub fn new(borrowed: &DataInitializer<'_>) -> Self {
118
58.5k
        Self {
119
58.5k
            location: borrowed.location.clone(),
120
58.5k
            data: borrowed.data.to_vec().into_boxed_slice(),
121
58.5k
        }
122
58.5k
    }
<wasmer_types::initializers::OwnedDataInitializer>::new
Line
Count
Source
117
7.48k
    pub fn new(borrowed: &DataInitializer<'_>) -> Self {
118
7.48k
        Self {
119
7.48k
            location: borrowed.location.clone(),
120
7.48k
            data: borrowed.data.to_vec().into_boxed_slice(),
121
7.48k
        }
122
7.48k
    }
123
}
124
125
impl<'a> DataInitializerLike<'a> for &'a OwnedDataInitializer {
126
    type Location = &'a DataInitializerLocation;
127
128
9.02k
    fn location(&self) -> Self::Location {
129
9.02k
        &self.location
130
9.02k
    }
<&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
Line
Count
Source
128
1.54k
    fn location(&self) -> Self::Location {
129
1.54k
        &self.location
130
1.54k
    }
Unexecuted instantiation: <&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
<&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
Line
Count
Source
128
7.48k
    fn location(&self) -> Self::Location {
129
7.48k
        &self.location
130
7.48k
    }
Unexecuted instantiation: <&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
131
132
9.02k
    fn data(&self) -> &'a [u8] {
133
9.02k
        self.data.as_ref()
134
9.02k
    }
<&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::data
Line
Count
Source
132
1.54k
    fn data(&self) -> &'a [u8] {
133
1.54k
        self.data.as_ref()
134
1.54k
    }
Unexecuted instantiation: <&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::data
<&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::data
Line
Count
Source
132
7.48k
    fn data(&self) -> &'a [u8] {
133
7.48k
        self.data.as_ref()
134
7.48k
    }
Unexecuted instantiation: <&wasmer_types::initializers::OwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::data
135
}
136
137
impl<'a> DataInitializerLike<'a> for &'a ArchivedOwnedDataInitializer {
138
    type Location = &'a ArchivedDataInitializerLocation;
139
140
0
    fn location(&self) -> Self::Location {
141
0
        &self.location
142
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedOwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedOwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedOwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedOwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::location
143
144
0
    fn data(&self) -> &'a [u8] {
145
0
        self.data.as_ref()
146
0
    }
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedOwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::data
Unexecuted instantiation: <&wasmer_types::initializers::ArchivedOwnedDataInitializer as wasmer_types::initializers::DataInitializerLike>::data
147
}