/src/wasm-tools/crates/wast/src/encode.rs
Line | Count | Source |
1 | | pub(crate) trait Encode { |
2 | | fn encode(&self, e: &mut Vec<u8>); |
3 | | } |
4 | | |
5 | | impl<T: Encode + ?Sized> Encode for &'_ T { |
6 | 0 | fn encode(&self, e: &mut Vec<u8>) { |
7 | 0 | T::encode(self, e) |
8 | 0 | } |
9 | | } |
10 | | |
11 | | impl<T: Encode + ?Sized> Encode for Box<T> { |
12 | 529k | fn encode(&self, e: &mut Vec<u8>) { |
13 | 529k | T::encode(self, e) |
14 | 529k | } <alloc::boxed::Box<wast::core::expr::BrOnCastFail> as wast::encode::Encode>::encode Line | Count | Source | 12 | 722 | fn encode(&self, e: &mut Vec<u8>) { | 13 | 722 | T::encode(self, e) | 14 | 722 | } |
<alloc::boxed::Box<wast::core::expr::CallIndirect> as wast::encode::Encode>::encode Line | Count | Source | 12 | 160 | fn encode(&self, e: &mut Vec<u8>) { | 13 | 160 | T::encode(self, e) | 14 | 160 | } |
Unexecuted instantiation: <alloc::boxed::Box<wast::core::expr::BrOnCastDescEq> as wast::encode::Encode>::encode Unexecuted instantiation: <alloc::boxed::Box<wast::core::expr::BrOnCastDescEqFail> as wast::encode::Encode>::encode <alloc::boxed::Box<wast::core::expr::BrOnCast> as wast::encode::Encode>::encode Line | Count | Source | 12 | 396 | fn encode(&self, e: &mut Vec<u8>) { | 13 | 396 | T::encode(self, e) | 14 | 396 | } |
<alloc::boxed::Box<wast::core::expr::BlockType> as wast::encode::Encode>::encode Line | Count | Source | 12 | 528k | fn encode(&self, e: &mut Vec<u8>) { | 13 | 528k | T::encode(self, e) | 14 | 528k | } |
|
15 | | } |
16 | | |
17 | | impl<T: Encode> Encode for [T] { |
18 | 158k | fn encode(&self, e: &mut Vec<u8>) { |
19 | 158k | self.len().encode(e); |
20 | 370k | for item in self { |
21 | 370k | item.encode(e); |
22 | 370k | } |
23 | 158k | } <[wast::core::expr::TryTableCatch] as wast::encode::Encode>::encode Line | Count | Source | 18 | 114k | fn encode(&self, e: &mut Vec<u8>) { | 19 | 114k | self.len().encode(e); | 20 | 314k | for item in self { | 21 | 314k | item.encode(e); | 22 | 314k | } | 23 | 114k | } |
Unexecuted instantiation: <[wast::core::expr::Handle] as wast::encode::Encode>::encode <[wast::core::types::ValType] as wast::encode::Encode>::encode Line | Count | Source | 18 | 52 | fn encode(&self, e: &mut Vec<u8>) { | 19 | 52 | self.len().encode(e); | 20 | 52 | for item in self { | 21 | 52 | item.encode(e); | 22 | 52 | } | 23 | 52 | } |
<[wast::token::Index] as wast::encode::Encode>::encode Line | Count | Source | 18 | 43.0k | fn encode(&self, e: &mut Vec<u8>) { | 19 | 43.0k | self.len().encode(e); | 20 | 55.2k | for item in self { | 21 | 55.2k | item.encode(e); | 22 | 55.2k | } | 23 | 43.0k | } |
Unexecuted instantiation: <[&str] as wast::encode::Encode>::encode Unexecuted instantiation: <[(&str, &str, u32)] as wast::encode::Encode>::encode Unexecuted instantiation: <[(&str, u32)] as wast::encode::Encode>::encode Unexecuted instantiation: <[u8] as wast::encode::Encode>::encode |
24 | | } |
25 | | |
26 | | impl<T: Encode> Encode for Vec<T> { |
27 | 158k | fn encode(&self, e: &mut Vec<u8>) { |
28 | 158k | <[T]>::encode(self, e) |
29 | 158k | } <alloc::vec::Vec<wast::token::Index> as wast::encode::Encode>::encode Line | Count | Source | 27 | 43.0k | fn encode(&self, e: &mut Vec<u8>) { | 28 | 43.0k | <[T]>::encode(self, e) | 29 | 43.0k | } |
<alloc::vec::Vec<wast::core::expr::TryTableCatch> as wast::encode::Encode>::encode Line | Count | Source | 27 | 114k | fn encode(&self, e: &mut Vec<u8>) { | 28 | 114k | <[T]>::encode(self, e) | 29 | 114k | } |
Unexecuted instantiation: <alloc::vec::Vec<wast::core::expr::Handle> as wast::encode::Encode>::encode <alloc::vec::Vec<wast::core::types::ValType> as wast::encode::Encode>::encode Line | Count | Source | 27 | 52 | fn encode(&self, e: &mut Vec<u8>) { | 28 | 52 | <[T]>::encode(self, e) | 29 | 52 | } |
Unexecuted instantiation: <alloc::vec::Vec<&str> as wast::encode::Encode>::encode Unexecuted instantiation: <alloc::vec::Vec<(&str, &str, u32)> as wast::encode::Encode>::encode Unexecuted instantiation: <alloc::vec::Vec<(&str, u32)> as wast::encode::Encode>::encode Unexecuted instantiation: <alloc::vec::Vec<u8> as wast::encode::Encode>::encode |
30 | | } |
31 | | |
32 | | impl Encode for str { |
33 | 0 | fn encode(&self, e: &mut Vec<u8>) { |
34 | 0 | self.len().encode(e); |
35 | 0 | e.extend_from_slice(self.as_bytes()); |
36 | 0 | } |
37 | | } |
38 | | |
39 | | impl Encode for usize { |
40 | 158k | fn encode(&self, e: &mut Vec<u8>) { |
41 | 158k | assert!(*self <= u32::max_value() as usize); |
42 | 158k | (*self as u32).encode(e) |
43 | 158k | } |
44 | | } |
45 | | |
46 | | impl Encode for u8 { |
47 | 323k | fn encode(&self, e: &mut Vec<u8>) { |
48 | 323k | e.push(*self); |
49 | 323k | } |
50 | | } |
51 | | |
52 | | impl Encode for u32 { |
53 | 3.74M | fn encode(&self, e: &mut Vec<u8>) { |
54 | 3.74M | let (value, pos) = leb128fmt::encode_u32(*self).unwrap(); |
55 | 3.74M | e.extend_from_slice(&value[..pos]); |
56 | 3.74M | } |
57 | | } |
58 | | |
59 | | impl Encode for i32 { |
60 | 304k | fn encode(&self, e: &mut Vec<u8>) { |
61 | 304k | let (value, pos) = leb128fmt::encode_s32(*self).unwrap(); |
62 | 304k | e.extend_from_slice(&value[..pos]); |
63 | 304k | } |
64 | | } |
65 | | |
66 | | impl Encode for u64 { |
67 | 117k | fn encode(&self, e: &mut Vec<u8>) { |
68 | 117k | let (value, pos) = leb128fmt::encode_u64(*self).unwrap(); |
69 | 117k | e.extend_from_slice(&value[..pos]); |
70 | 117k | } |
71 | | } |
72 | | |
73 | | impl Encode for i64 { |
74 | 1.08M | fn encode(&self, e: &mut Vec<u8>) { |
75 | 1.08M | let (value, pos) = leb128fmt::encode_s64(*self).unwrap(); |
76 | 1.08M | e.extend_from_slice(&value[..pos]); |
77 | 1.08M | } |
78 | | } |
79 | | |
80 | | impl<T: Encode, U: Encode> Encode for (T, U) { |
81 | 0 | fn encode(&self, e: &mut Vec<u8>) { |
82 | 0 | self.0.encode(e); |
83 | 0 | self.1.encode(e); |
84 | 0 | } |
85 | | } |
86 | | |
87 | | impl<T: Encode, U: Encode, V: Encode> Encode for (T, U, V) { |
88 | 0 | fn encode(&self, e: &mut Vec<u8>) { |
89 | 0 | self.0.encode(e); |
90 | 0 | self.1.encode(e); |
91 | 0 | self.2.encode(e); |
92 | 0 | } |
93 | | } |