Coverage Report

Created: 2021-03-22 08:29

/src/wasmtime/cranelift/entity/src/iter.rs
Line
Count
Source (jump to first uncovered line)
1
//! A double-ended iterator over entity references and entities.
2
3
use crate::EntityRef;
4
use alloc::vec;
5
use core::iter::Enumerate;
6
use core::marker::PhantomData;
7
use core::slice;
8
9
/// Iterate over all keys in order.
10
pub struct Iter<'a, K: EntityRef, V>
11
where
12
    V: 'a,
13
{
14
    enumerate: Enumerate<slice::Iter<'a, V>>,
15
    unused: PhantomData<K>,
16
}
17
18
impl<'a, K: EntityRef, V> Iter<'a, K, V> {
19
    /// Create an `Iter` iterator that visits the `PrimaryMap` keys and values
20
    /// of `iter`.
21
8.26M
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
8.26M
        Self {
23
8.26M
            enumerate: iter.enumerate(),
24
8.26M
            unused: PhantomData,
25
8.26M
        }
26
8.26M
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, cranelift_wasm::environ::spec::WasmFuncType>>::new
Line
Count
Source
21
68.8k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
68.8k
        Self {
23
68.8k
            enumerate: iter.enumerate(),
24
68.8k
            unused: PhantomData,
25
68.8k
        }
26
68.8k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, cranelift_codegen::ir::extfunc::Signature>>::new
Line
Count
Source
21
117k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
117k
        Self {
23
117k
            enumerate: iter.enumerate(),
24
117k
            unused: PhantomData,
25
117k
        }
26
117k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, wasmtime_environ::compilation::CompiledFunction>>::new
Line
Count
Source
21
117k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
117k
        Self {
23
117k
            enumerate: iter.enumerate(),
24
117k
            unused: PhantomData,
25
117k
        }
26
117k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, *mut [wasmtime_runtime::vmcontext::VMFunctionBody]>>::new
Line
Count
Source
21
52.6k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
52.6k
        Self {
23
52.6k
            enumerate: iter.enumerate(),
24
52.6k
            unused: PhantomData,
25
52.6k
        }
26
52.6k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_debug::transform::address_transform::FunctionMap>>::new
Line
Count
Source
21
35.0k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
35.0k
        Self {
23
35.0k
            enumerate: iter.enumerate(),
24
35.0k
            unused: PhantomData,
25
35.0k
        }
26
35.0k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction>>::new
Line
Count
Source
21
404k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
404k
        Self {
23
404k
            enumerate: iter.enumerate(),
24
404k
            unused: PhantomData,
25
404k
        }
26
404k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::GlobalIndex, cranelift_wasm::translation_utils::Global>>::new
Line
Count
Source
21
69.5k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
69.5k
        Self {
23
69.5k
            enumerate: iter.enumerate(),
24
69.5k
            unused: PhantomData,
25
69.5k
        }
26
69.5k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::FuncIndex, cranelift_wasm::translation_utils::SignatureIndex>>::new
Line
Count
Source
21
69.5k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
69.5k
        Self {
23
69.5k
            enumerate: iter.enumerate(),
24
69.5k
            unused: PhantomData,
25
69.5k
        }
26
69.5k
    }
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::Value, cranelift_codegen::ir::dfg::ValueData>>::new
Line
Count
Source
21
2.44M
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
2.44M
        Self {
23
2.44M
            enumerate: iter.enumerate(),
24
2.44M
            unused: PhantomData,
25
2.44M
        }
26
2.44M
    }
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::JumpTable, cranelift_codegen::ir::jumptable::JumpTableData>>::new
Line
Count
Source
21
4.88M
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
4.88M
        Self {
23
4.88M
            enumerate: iter.enumerate(),
24
4.88M
            unused: PhantomData,
25
4.88M
        }
26
4.88M
    }
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::StackSlot, cranelift_codegen::ir::stackslot::StackSlotData>>::new
Line
Count
Source
21
3.20k
    pub fn new(iter: slice::Iter<'a, V>) -> Self {
22
3.20k
        Self {
23
3.20k
            enumerate: iter.enumerate(),
24
3.20k
            unused: PhantomData,
25
3.20k
        }
26
3.20k
    }
27
}
28
29
impl<'a, K: EntityRef, V> Iterator for Iter<'a, K, V> {
30
    type Item = (K, &'a V);
31
32
71.3M
    fn next(&mut self) -> Option<Self::Item> {
33
71.3M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, cranelift_wasm::environ::spec::WasmFuncType> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
148k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, cranelift_codegen::ir::extfunc::Signature> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
1.59M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
1.59M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, *mut [wasmtime_runtime::vmcontext::VMFunctionBody]> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
444k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
2.45M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_debug::transform::address_transform::FunctionMap> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
35.2k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::FuncIndex, cranelift_wasm::translation_utils::SignatureIndex> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
460k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::GlobalIndex, cranelift_wasm::translation_utils::Global> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
84.2k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::Value, cranelift_codegen::ir::dfg::ValueData> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
56.1M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::JumpTable, cranelift_codegen::ir::jumptable::JumpTableData> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
12.9k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::StackSlot, cranelift_codegen::ir::stackslot::StackSlotData> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
33
123k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
71.3M
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, cranelift_wasm::environ::spec::WasmFuncType> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
217k
    fn next(&mut self) -> Option<Self::Item> {
33
217k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
217k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, cranelift_codegen::ir::extfunc::Signature> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
1.70M
    fn next(&mut self) -> Option<Self::Item> {
33
1.70M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
1.70M
    }
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::TypeIndex, wasmtime_environ::module::ModuleType> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::TableIndex, wasmtime_environ::module::TablePlan> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::GlobalIndex, cranelift_wasm::translation_utils::Global> as core::iter::traits::iterator::Iterator>::next
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::SignatureIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
1.70M
    fn next(&mut self) -> Option<Self::Item> {
33
1.70M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
1.70M
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, *mut [wasmtime_runtime::vmcontext::VMFunctionBody]> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
497k
    fn next(&mut self) -> Option<Self::Item> {
33
497k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
497k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
2.85M
    fn next(&mut self) -> Option<Self::Item> {
33
2.85M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
2.85M
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_debug::transform::address_transform::FunctionMap> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
70.3k
    fn next(&mut self) -> Option<Self::Item> {
33
70.3k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
70.3k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::GlobalIndex, cranelift_wasm::translation_utils::Global> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
153k
    fn next(&mut self) -> Option<Self::Item> {
33
153k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
153k
    }
<cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::FuncIndex, cranelift_wasm::translation_utils::SignatureIndex> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
530k
    fn next(&mut self) -> Option<Self::Item> {
33
530k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
530k
    }
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_wasm::translation_utils::DefinedMemoryIndex, alloc::vec::Vec<core::option::Option<alloc::boxed::Box<[u8]>>>> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::Heap, cranelift_codegen::ir::heap::HeapData> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::Table, cranelift_codegen::ir::table::TableData> as core::iter::traits::iterator::Iterator>::next
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::Value, cranelift_codegen::ir::dfg::ValueData> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
58.5M
    fn next(&mut self) -> Option<Self::Item> {
33
58.5M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
58.5M
    }
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::SigRef, cranelift_codegen::ir::extfunc::Signature> as core::iter::traits::iterator::Iterator>::next
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::StackSlot, cranelift_codegen::ir::stackslot::StackSlotData> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
126k
    fn next(&mut self) -> Option<Self::Item> {
33
126k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
126k
    }
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::GlobalValue, cranelift_codegen::ir::globalvalue::GlobalValueData> as core::iter::traits::iterator::Iterator>::next
Unexecuted instantiation: <cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::FuncRef, cranelift_codegen::ir::extfunc::ExtFuncData> as core::iter::traits::iterator::Iterator>::next
<cranelift_entity::iter::Iter<cranelift_codegen::ir::entities::JumpTable, cranelift_codegen::ir::jumptable::JumpTableData> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
32
4.89M
    fn next(&mut self) -> Option<Self::Item> {
33
4.89M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
34
4.89M
    }
35
36
84.4k
    fn size_hint(&self) -> (usize, Option<usize>) {
37
84.4k
        self.enumerate.size_hint()
38
84.4k
    }
39
}
40
41
impl<'a, K: EntityRef, V> DoubleEndedIterator for Iter<'a, K, V> {
42
0
    fn next_back(&mut self) -> Option<Self::Item> {
43
0
        self.enumerate.next_back().map(|(i, v)| (K::new(i), v))
44
0
    }
45
}
46
47
impl<'a, K: EntityRef, V> ExactSizeIterator for Iter<'a, K, V> {}
48
49
/// Iterate over all keys in order.
50
pub struct IterMut<'a, K: EntityRef, V>
51
where
52
    V: 'a,
53
{
54
    enumerate: Enumerate<slice::IterMut<'a, V>>,
55
    unused: PhantomData<K>,
56
}
57
58
impl<'a, K: EntityRef, V> IterMut<'a, K, V> {
59
    /// Create an `IterMut` iterator that visits the `PrimaryMap` keys and values
60
    /// of `iter`.
61
2.44M
    pub fn new(iter: slice::IterMut<'a, V>) -> Self {
62
2.44M
        Self {
63
2.44M
            enumerate: iter.enumerate(),
64
2.44M
            unused: PhantomData,
65
2.44M
        }
66
2.44M
    }
67
}
68
69
impl<'a, K: EntityRef, V> Iterator for IterMut<'a, K, V> {
70
    type Item = (K, &'a mut V);
71
72
4.19M
    fn next(&mut self) -> Option<Self::Item> {
73
4.19M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
74
4.19M
    }
75
76
    fn size_hint(&self) -> (usize, Option<usize>) {
77
        self.enumerate.size_hint()
78
    }
79
}
80
81
impl<'a, K: EntityRef, V> DoubleEndedIterator for IterMut<'a, K, V> {
82
    fn next_back(&mut self) -> Option<Self::Item> {
83
        self.enumerate.next_back().map(|(i, v)| (K::new(i), v))
84
    }
85
}
86
87
impl<'a, K: EntityRef, V> ExactSizeIterator for IterMut<'a, K, V> {}
88
89
/// Iterate over all keys in order.
90
pub struct IntoIter<K: EntityRef, V> {
91
    enumerate: Enumerate<vec::IntoIter<V>>,
92
    unused: PhantomData<K>,
93
}
94
95
impl<K: EntityRef, V> IntoIter<K, V> {
96
    /// Create an `IntoIter` iterator that visits the `PrimaryMap` keys and values
97
    /// of `iter`.
98
257k
    pub fn new(iter: vec::IntoIter<V>) -> Self {
99
257k
        Self {
100
257k
            enumerate: iter.enumerate(),
101
257k
            unused: PhantomData,
102
257k
        }
103
257k
    }
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::module_environ::FunctionBodyData>>::new
Line
Count
Source
98
139k
    pub fn new(iter: vec::IntoIter<V>) -> Self {
99
139k
        Self {
100
139k
            enumerate: iter.enumerate(),
101
139k
            unused: PhantomData,
102
139k
        }
103
139k
    }
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction>>::new
Line
Count
Source
98
117k
    pub fn new(iter: vec::IntoIter<V>) -> Self {
99
117k
        Self {
100
117k
            enumerate: iter.enumerate(),
101
117k
            unused: PhantomData,
102
117k
        }
103
117k
    }
104
}
105
106
impl<K: EntityRef, V> Iterator for IntoIter<K, V> {
107
    type Item = (K, V);
108
109
2.30M
    fn next(&mut self) -> Option<Self::Item> {
110
2.30M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
110
799k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::module_environ::FunctionBodyData> as core::iter::traits::iterator::Iterator>::next::{closure#0}
Line
Count
Source
110
1.25M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
111
2.30M
    }
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::module_environ::FunctionBodyData> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
109
1.39M
    fn next(&mut self) -> Option<Self::Item> {
110
1.39M
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
111
1.39M
    }
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::next
Line
Count
Source
109
916k
    fn next(&mut self) -> Option<Self::Item> {
110
916k
        self.enumerate.next().map(|(i, v)| (K::new(i), v))
111
916k
    }
112
113
148k
    fn size_hint(&self) -> (usize, Option<usize>) {
114
148k
        self.enumerate.size_hint()
115
148k
    }
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::compilation::CompiledFunction> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
113
63.0k
    fn size_hint(&self) -> (usize, Option<usize>) {
114
63.0k
        self.enumerate.size_hint()
115
63.0k
    }
<cranelift_entity::iter::IntoIter<cranelift_wasm::translation_utils::DefinedFuncIndex, wasmtime_environ::module_environ::FunctionBodyData> as core::iter::traits::iterator::Iterator>::size_hint
Line
Count
Source
113
85.4k
    fn size_hint(&self) -> (usize, Option<usize>) {
114
85.4k
        self.enumerate.size_hint()
115
85.4k
    }
116
}
117
118
impl<K: EntityRef, V> DoubleEndedIterator for IntoIter<K, V> {
119
    fn next_back(&mut self) -> Option<Self::Item> {
120
        self.enumerate.next_back().map(|(i, v)| (K::new(i), v))
121
    }
122
}
123
124
impl<K: EntityRef, V> ExactSizeIterator for IntoIter<K, V> {}