Coverage Report

Created: 2024-05-16 12:16

/__w/smoldot/smoldot/repo/lib/src/executor/host/functions.rs
Line
Count
Source (jump to first uncovered line)
1
// Smoldot
2
// Copyright (C) 2019-2022  Parity Technologies (UK) Ltd.
3
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
4
5
// This program is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
10
// This program is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
// GNU General Public License for more details.
14
15
// You should have received a copy of the GNU General Public License
16
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18
//! Contains the list of all host functions, in other words functions that the runtime is allowed
19
//! to call.
20
21
use crate::executor::vm;
22
23
macro_rules! host_functions {
24
    ($($ext:ident,)*) => {
25
        /// List of possible host functions.
26
        #[derive(Debug, Copy, Clone, PartialEq, Eq)]
27
        #[allow(non_camel_case_types)]
28
        pub enum HostFunction {
29
            $(
30
                $ext,
31
            )*
32
        }
33
34
        impl HostFunction {
35
            /// Returns a host function given its name.
36
2.95k
            pub fn by_name(name: &str) -> Option<Self> {
37
                $(
38
2.95k
                    if 
name15
== stringify!($ext) {
39
2.94k
                        return Some(HostFunction::$ext);
40
136k
                    }
41
15
                )*
42
15
                None
43
2.95k
            }
_RNvMs_NtNtNtCsN16ciHI6Qf_7smoldot8executor4host9functionsNtB4_12HostFunction7by_name
Line
Count
Source
36
461
            pub fn by_name(name: &str) -> Option<Self> {
37
                $(
38
461
                    if 
name15
== stringify!($ext) {
39
446
                        return Some(HostFunction::$ext);
40
22.0k
                    }
41
15
                )*
42
15
                None
43
461
            }
_RNvMs_NtNtNtCseuYC0Zibziv_7smoldot8executor4host9functionsNtB4_12HostFunction7by_name
Line
Count
Source
36
2.49k
            pub fn by_name(name: &str) -> Option<Self> {
37
                $(
38
2.49k
                    if 
name0
== stringify!($ext) {
39
2.49k
                        return Some(HostFunction::$ext);
40
114k
                    }
41
0
                )*
42
0
                None
43
2.49k
            }
44
45
            /// Returns the name of this host function.
46
16.8k
            pub fn name(&self) -> &'static str {
47
16.8k
                match self {
48
                    $(
49
0
                        HostFunction::$ext => stringify!($ext),
50
                    )*
51
                }
52
16.8k
            }
_RNvMs_NtNtNtCsN16ciHI6Qf_7smoldot8executor4host9functionsNtB4_12HostFunction4name
Line
Count
Source
46
14.3k
            pub fn name(&self) -> &'static str {
47
14.3k
                match self {
48
                    $(
49
0
                        HostFunction::$ext => stringify!($ext),
50
                    )*
51
                }
52
14.3k
            }
_RNvMs_NtNtNtCseuYC0Zibziv_7smoldot8executor4host9functionsNtB4_12HostFunction4name
Line
Count
Source
46
2.53k
            pub fn name(&self) -> &'static str {
47
2.53k
                match self {
48
                    $(
49
0
                        HostFunction::$ext => stringify!($ext),
50
                    )*
51
                }
52
2.53k
            }
53
        }
54
    };
55
}
56
57
host_functions! {
58
    ext_storage_set_version_1,
59
    ext_storage_get_version_1,
60
    ext_storage_read_version_1,
61
    ext_storage_clear_version_1,
62
    ext_storage_exists_version_1,
63
    ext_storage_clear_prefix_version_1,
64
    ext_storage_clear_prefix_version_2,
65
    ext_storage_root_version_1,
66
    ext_storage_root_version_2,
67
    ext_storage_changes_root_version_1,
68
    ext_storage_next_key_version_1,
69
    ext_storage_append_version_1,
70
    ext_storage_start_transaction_version_1,
71
    ext_storage_rollback_transaction_version_1,
72
    ext_storage_commit_transaction_version_1,
73
    ext_storage_proof_size_storage_proof_size_version_1,
74
    ext_default_child_storage_get_version_1,
75
    ext_default_child_storage_read_version_1,
76
    ext_default_child_storage_storage_kill_version_1,
77
    ext_default_child_storage_storage_kill_version_2,
78
    ext_default_child_storage_storage_kill_version_3,
79
    ext_default_child_storage_clear_prefix_version_1,
80
    ext_default_child_storage_clear_prefix_version_2,
81
    ext_default_child_storage_set_version_1,
82
    ext_default_child_storage_clear_version_1,
83
    ext_default_child_storage_exists_version_1,
84
    ext_default_child_storage_next_key_version_1,
85
    ext_default_child_storage_root_version_1,
86
    ext_default_child_storage_root_version_2,
87
    ext_crypto_ed25519_public_keys_version_1,
88
    ext_crypto_ed25519_generate_version_1,
89
    ext_crypto_ed25519_sign_version_1,
90
    ext_crypto_ed25519_verify_version_1,
91
    ext_crypto_ed25519_batch_verify_version_1,
92
    ext_crypto_sr25519_public_keys_version_1,
93
    ext_crypto_sr25519_generate_version_1,
94
    ext_crypto_sr25519_sign_version_1,
95
    ext_crypto_sr25519_verify_version_1,
96
    ext_crypto_sr25519_verify_version_2,
97
    ext_crypto_sr25519_batch_verify_version_1,
98
    ext_crypto_ecdsa_generate_version_1,
99
    ext_crypto_ecdsa_sign_version_1,
100
    ext_crypto_ecdsa_public_keys_version_1,
101
    ext_crypto_ecdsa_verify_version_1,
102
    ext_crypto_ecdsa_verify_version_2,
103
    ext_crypto_ecdsa_sign_prehashed_version_1,
104
    ext_crypto_ecdsa_verify_prehashed_version_1,
105
    ext_crypto_ecdsa_batch_verify_version_1,
106
    ext_crypto_secp256k1_ecdsa_recover_version_1,
107
    ext_crypto_secp256k1_ecdsa_recover_version_2,
108
    ext_crypto_secp256k1_ecdsa_recover_compressed_version_1,
109
    ext_crypto_secp256k1_ecdsa_recover_compressed_version_2,
110
    ext_crypto_start_batch_verify_version_1,
111
    ext_crypto_finish_batch_verify_version_1,
112
    ext_hashing_keccak_256_version_1,
113
    ext_hashing_keccak_512_version_1,
114
    ext_hashing_sha2_256_version_1,
115
    ext_hashing_blake2_128_version_1,
116
    ext_hashing_blake2_256_version_1,
117
    ext_hashing_twox_64_version_1,
118
    ext_hashing_twox_128_version_1,
119
    ext_hashing_twox_256_version_1,
120
    ext_offchain_index_set_version_1,
121
    ext_offchain_index_clear_version_1,
122
    ext_offchain_is_validator_version_1,
123
    ext_offchain_submit_transaction_version_1,
124
    ext_offchain_network_state_version_1,
125
    ext_offchain_timestamp_version_1,
126
    ext_offchain_sleep_until_version_1,
127
    ext_offchain_random_seed_version_1,
128
    ext_offchain_local_storage_set_version_1,
129
    ext_offchain_local_storage_compare_and_set_version_1,
130
    ext_offchain_local_storage_get_version_1,
131
    ext_offchain_local_storage_clear_version_1,
132
    ext_offchain_http_request_start_version_1,
133
    ext_offchain_http_request_add_header_version_1,
134
    ext_offchain_http_request_write_body_version_1,
135
    ext_offchain_http_response_wait_version_1,
136
    ext_offchain_http_response_headers_version_1,
137
    ext_offchain_http_response_read_body_version_1,
138
    ext_trie_blake2_256_root_version_1,
139
    ext_trie_blake2_256_root_version_2,
140
    ext_trie_blake2_256_ordered_root_version_1,
141
    ext_trie_blake2_256_ordered_root_version_2,
142
    ext_trie_keccak_256_root_version_1,
143
    ext_trie_keccak_256_root_version_2,
144
    ext_trie_keccak_256_ordered_root_version_1,
145
    ext_trie_keccak_256_ordered_root_version_2,
146
    ext_trie_blake2_256_verify_proof_version_1,
147
    ext_trie_blake2_256_verify_proof_version_2,
148
    ext_trie_keccak_256_verify_proof_version_1,
149
    ext_trie_keccak_256_verify_proof_version_2,
150
    ext_misc_print_num_version_1,
151
    ext_misc_print_utf8_version_1,
152
    ext_misc_print_hex_version_1,
153
    ext_misc_runtime_version_version_1,
154
    ext_allocator_malloc_version_1,
155
    ext_allocator_free_version_1,
156
    ext_logging_log_version_1,
157
    ext_logging_max_level_version_1,
158
    ext_panic_handler_abort_on_panic_version_1,
159
}
160
161
impl HostFunction {
162
    /// Returns the signature of this host function.
163
    // TODO: make this a `const fn` function
164
2.94k
    pub fn signature(&self) -> vm::Signature {
165
2.94k
        match *self {
166
            HostFunction::ext_storage_set_version_1 => {
167
96
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
168
            }
169
            HostFunction::ext_storage_get_version_1 => {
170
96
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
171
            }
172
            HostFunction::ext_storage_read_version_1 => {
173
96
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
174
            }
175
            HostFunction::ext_storage_clear_version_1 => {
176
96
                crate::signature!((vm::ValueType::I64) => ())
177
            }
178
            HostFunction::ext_storage_exists_version_1 => {
179
95
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
180
            }
181
            HostFunction::ext_storage_clear_prefix_version_1 => {
182
1
                crate::signature!((vm::ValueType::I64) => ())
183
            }
184
            HostFunction::ext_storage_clear_prefix_version_2 => {
185
95
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
186
            }
187
87
            HostFunction::ext_storage_root_version_1 => crate::signature!(() => vm::ValueType::I64),
188
            HostFunction::ext_storage_root_version_2 => {
189
9
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
190
            }
191
            HostFunction::ext_storage_changes_root_version_1 => {
192
87
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
193
            }
194
            HostFunction::ext_storage_next_key_version_1 => {
195
96
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
196
            }
197
            HostFunction::ext_storage_append_version_1 => {
198
96
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
199
            }
200
10
            HostFunction::ext_storage_start_transaction_version_1 => crate::signature!(() => ()),
201
10
            HostFunction::ext_storage_rollback_transaction_version_1 => crate::signature!(() => ()),
202
10
            HostFunction::ext_storage_commit_transaction_version_1 => crate::signature!(() => ()),
203
            HostFunction::ext_storage_proof_size_storage_proof_size_version_1 => {
204
0
                crate::signature!(() => vm::ValueType::I64)
205
            }
206
            HostFunction::ext_default_child_storage_get_version_1 => {
207
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
208
            }
209
            HostFunction::ext_default_child_storage_read_version_1 => {
210
4
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
211
            }
212
            HostFunction::ext_default_child_storage_storage_kill_version_1 => {
213
1
                crate::signature!((vm::ValueType::I64) => ())
214
            }
215
            HostFunction::ext_default_child_storage_storage_kill_version_2 => {
216
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
217
            }
218
            HostFunction::ext_default_child_storage_storage_kill_version_3 => {
219
4
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
220
            }
221
            HostFunction::ext_default_child_storage_clear_prefix_version_1 => {
222
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
223
            }
224
            HostFunction::ext_default_child_storage_clear_prefix_version_2 => {
225
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
226
            }
227
            HostFunction::ext_default_child_storage_set_version_1 => {
228
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => ())
229
            }
230
            HostFunction::ext_default_child_storage_clear_version_1 => {
231
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
232
            }
233
            HostFunction::ext_default_child_storage_exists_version_1 => {
234
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
235
            }
236
            HostFunction::ext_default_child_storage_next_key_version_1 => {
237
5
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
238
            }
239
            HostFunction::ext_default_child_storage_root_version_1 => {
240
1
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
241
            }
242
            HostFunction::ext_default_child_storage_root_version_2 => {
243
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
244
            }
245
            HostFunction::ext_crypto_ed25519_public_keys_version_1 => {
246
0
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
247
            }
248
            HostFunction::ext_crypto_ed25519_generate_version_1 => {
249
92
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
250
            }
251
            HostFunction::ext_crypto_ed25519_sign_version_1 => {
252
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
253
            }
254
            HostFunction::ext_crypto_ed25519_verify_version_1 => {
255
96
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
256
            }
257
            HostFunction::ext_crypto_ed25519_batch_verify_version_1 => {
258
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
259
            }
260
            HostFunction::ext_crypto_sr25519_public_keys_version_1 => {
261
6
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
262
            }
263
            HostFunction::ext_crypto_sr25519_generate_version_1 => {
264
92
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
265
            }
266
            HostFunction::ext_crypto_sr25519_sign_version_1 => {
267
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
268
            }
269
            HostFunction::ext_crypto_sr25519_verify_version_1 => {
270
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
271
            }
272
            HostFunction::ext_crypto_sr25519_verify_version_2 => {
273
96
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
274
            }
275
            HostFunction::ext_crypto_sr25519_batch_verify_version_1 => {
276
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
277
            }
278
            HostFunction::ext_crypto_ecdsa_generate_version_1 => {
279
2
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
280
            }
281
            HostFunction::ext_crypto_ecdsa_sign_version_1 => {
282
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
283
            }
284
            HostFunction::ext_crypto_ecdsa_public_keys_version_1 => {
285
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
286
            }
287
            HostFunction::ext_crypto_ecdsa_verify_version_1 => {
288
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
289
            }
290
            HostFunction::ext_crypto_ecdsa_verify_version_2 => {
291
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
292
            }
293
            HostFunction::ext_crypto_ecdsa_sign_prehashed_version_1 => {
294
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
295
            }
296
            HostFunction::ext_crypto_ecdsa_verify_prehashed_version_1 => {
297
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I32)
298
            }
299
            HostFunction::ext_crypto_ecdsa_batch_verify_version_1 => {
300
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
301
            }
302
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_version_1 => {
303
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
304
            }
305
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_version_2 => {
306
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
307
            }
308
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_compressed_version_1 => {
309
1
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
310
            }
311
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_compressed_version_2 => {
312
95
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
313
            }
314
95
            HostFunction::ext_crypto_start_batch_verify_version_1 => crate::signature!(() => ()),
315
            HostFunction::ext_crypto_finish_batch_verify_version_1 => {
316
95
                crate::signature!(() => vm::ValueType::I32)
317
            }
318
            HostFunction::ext_hashing_keccak_256_version_1 => {
319
9
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
320
            }
321
            HostFunction::ext_hashing_keccak_512_version_1 => {
322
2
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
323
            }
324
            HostFunction::ext_hashing_sha2_256_version_1 => {
325
7
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
326
            }
327
            HostFunction::ext_hashing_blake2_128_version_1 => {
328
96
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
329
            }
330
            HostFunction::ext_hashing_blake2_256_version_1 => {
331
98
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
332
            }
333
            HostFunction::ext_hashing_twox_64_version_1 => {
334
98
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
335
            }
336
            HostFunction::ext_hashing_twox_128_version_1 => {
337
98
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
338
            }
339
            HostFunction::ext_hashing_twox_256_version_1 => {
340
2
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
341
            }
342
            HostFunction::ext_offchain_index_set_version_1 => {
343
6
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
344
            }
345
            HostFunction::ext_offchain_index_clear_version_1 => {
346
0
                crate::signature!((vm::ValueType::I64) => ())
347
            }
348
            HostFunction::ext_offchain_is_validator_version_1 => {
349
6
                crate::signature!(() => vm::ValueType::I32)
350
            }
351
            HostFunction::ext_offchain_submit_transaction_version_1 => {
352
6
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
353
            }
354
            HostFunction::ext_offchain_network_state_version_1 => {
355
6
                crate::signature!(() => vm::ValueType::I64)
356
            }
357
            HostFunction::ext_offchain_timestamp_version_1 => {
358
3
                crate::signature!(() => vm::ValueType::I64)
359
            }
360
            HostFunction::ext_offchain_sleep_until_version_1 => {
361
0
                crate::signature!((vm::ValueType::I64) => ())
362
            }
363
            HostFunction::ext_offchain_random_seed_version_1 => {
364
6
                crate::signature!(() => vm::ValueType::I32)
365
            }
366
            HostFunction::ext_offchain_local_storage_set_version_1 => {
367
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => ())
368
            }
369
            HostFunction::ext_offchain_local_storage_compare_and_set_version_1 => {
370
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
371
            }
372
            HostFunction::ext_offchain_local_storage_get_version_1 => {
373
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
374
            }
375
            HostFunction::ext_offchain_local_storage_clear_version_1 => {
376
3
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => ())
377
            }
378
            HostFunction::ext_offchain_http_request_start_version_1 => {
379
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
380
            }
381
            HostFunction::ext_offchain_http_request_add_header_version_1 => {
382
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
383
            }
384
            HostFunction::ext_offchain_http_request_write_body_version_1 => {
385
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
386
            }
387
            HostFunction::ext_offchain_http_response_wait_version_1 => {
388
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
389
            }
390
            HostFunction::ext_offchain_http_response_headers_version_1 => {
391
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
392
            }
393
            HostFunction::ext_offchain_http_response_read_body_version_1 => {
394
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
395
            }
396
            HostFunction::ext_trie_blake2_256_root_version_1 => {
397
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
398
            }
399
            HostFunction::ext_trie_blake2_256_root_version_2 => {
400
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
401
            }
402
            HostFunction::ext_trie_blake2_256_ordered_root_version_1 => {
403
87
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
404
            }
405
            HostFunction::ext_trie_blake2_256_ordered_root_version_2 => {
406
9
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
407
            }
408
            HostFunction::ext_trie_keccak_256_root_version_1 => {
409
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
410
            }
411
            HostFunction::ext_trie_keccak_256_root_version_2 => {
412
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
413
            }
414
            HostFunction::ext_trie_keccak_256_ordered_root_version_1 => {
415
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
416
            }
417
            HostFunction::ext_trie_keccak_256_ordered_root_version_2 => {
418
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
419
            }
420
            HostFunction::ext_trie_blake2_256_verify_proof_version_1 => {
421
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
422
            }
423
            HostFunction::ext_trie_blake2_256_verify_proof_version_2 => {
424
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
425
            }
426
            HostFunction::ext_trie_keccak_256_verify_proof_version_1 => {
427
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
428
            }
429
            HostFunction::ext_trie_keccak_256_verify_proof_version_2 => {
430
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
431
            }
432
            HostFunction::ext_misc_print_num_version_1 => {
433
4
                crate::signature!((vm::ValueType::I64) => ())
434
            }
435
            HostFunction::ext_misc_print_utf8_version_1 => {
436
96
                crate::signature!((vm::ValueType::I64) => ())
437
            }
438
            HostFunction::ext_misc_print_hex_version_1 => {
439
96
                crate::signature!((vm::ValueType::I64) => ())
440
            }
441
            HostFunction::ext_misc_runtime_version_version_1 => {
442
96
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
443
            }
444
            HostFunction::ext_allocator_malloc_version_1 => {
445
100
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I32)
446
            }
447
            HostFunction::ext_allocator_free_version_1 => {
448
96
                crate::signature!((vm::ValueType::I32) => ())
449
            }
450
            HostFunction::ext_logging_log_version_1 => {
451
96
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => ())
452
            }
453
            HostFunction::ext_logging_max_level_version_1 => {
454
95
                crate::signature!(() => vm::ValueType::I32)
455
            }
456
            HostFunction::ext_panic_handler_abort_on_panic_version_1 => {
457
0
                crate::signature!((vm::ValueType::I64) => ())
458
            }
459
        }
460
2.94k
    }
_RNvMNtNtNtCsN16ciHI6Qf_7smoldot8executor4host9functionsNtB2_12HostFunction9signature
Line
Count
Source
164
446
    pub fn signature(&self) -> vm::Signature {
165
446
        match *self {
166
            HostFunction::ext_storage_set_version_1 => {
167
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
168
            }
169
            HostFunction::ext_storage_get_version_1 => {
170
10
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
171
            }
172
            HostFunction::ext_storage_read_version_1 => {
173
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
174
            }
175
            HostFunction::ext_storage_clear_version_1 => {
176
10
                crate::signature!((vm::ValueType::I64) => ())
177
            }
178
            HostFunction::ext_storage_exists_version_1 => {
179
9
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
180
            }
181
            HostFunction::ext_storage_clear_prefix_version_1 => {
182
1
                crate::signature!((vm::ValueType::I64) => ())
183
            }
184
            HostFunction::ext_storage_clear_prefix_version_2 => {
185
9
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
186
            }
187
1
            HostFunction::ext_storage_root_version_1 => crate::signature!(() => vm::ValueType::I64),
188
            HostFunction::ext_storage_root_version_2 => {
189
9
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
190
            }
191
            HostFunction::ext_storage_changes_root_version_1 => {
192
1
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
193
            }
194
            HostFunction::ext_storage_next_key_version_1 => {
195
10
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
196
            }
197
            HostFunction::ext_storage_append_version_1 => {
198
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
199
            }
200
10
            HostFunction::ext_storage_start_transaction_version_1 => crate::signature!(() => ()),
201
10
            HostFunction::ext_storage_rollback_transaction_version_1 => crate::signature!(() => ()),
202
10
            HostFunction::ext_storage_commit_transaction_version_1 => crate::signature!(() => ()),
203
            HostFunction::ext_storage_proof_size_storage_proof_size_version_1 => {
204
0
                crate::signature!(() => vm::ValueType::I64)
205
            }
206
            HostFunction::ext_default_child_storage_get_version_1 => {
207
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
208
            }
209
            HostFunction::ext_default_child_storage_read_version_1 => {
210
4
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
211
            }
212
            HostFunction::ext_default_child_storage_storage_kill_version_1 => {
213
1
                crate::signature!((vm::ValueType::I64) => ())
214
            }
215
            HostFunction::ext_default_child_storage_storage_kill_version_2 => {
216
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
217
            }
218
            HostFunction::ext_default_child_storage_storage_kill_version_3 => {
219
4
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
220
            }
221
            HostFunction::ext_default_child_storage_clear_prefix_version_1 => {
222
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
223
            }
224
            HostFunction::ext_default_child_storage_clear_prefix_version_2 => {
225
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
226
            }
227
            HostFunction::ext_default_child_storage_set_version_1 => {
228
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => ())
229
            }
230
            HostFunction::ext_default_child_storage_clear_version_1 => {
231
10
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
232
            }
233
            HostFunction::ext_default_child_storage_exists_version_1 => {
234
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
235
            }
236
            HostFunction::ext_default_child_storage_next_key_version_1 => {
237
5
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
238
            }
239
            HostFunction::ext_default_child_storage_root_version_1 => {
240
1
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
241
            }
242
            HostFunction::ext_default_child_storage_root_version_2 => {
243
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
244
            }
245
            HostFunction::ext_crypto_ed25519_public_keys_version_1 => {
246
0
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
247
            }
248
            HostFunction::ext_crypto_ed25519_generate_version_1 => {
249
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
250
            }
251
            HostFunction::ext_crypto_ed25519_sign_version_1 => {
252
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
253
            }
254
            HostFunction::ext_crypto_ed25519_verify_version_1 => {
255
10
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
256
            }
257
            HostFunction::ext_crypto_ed25519_batch_verify_version_1 => {
258
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
259
            }
260
            HostFunction::ext_crypto_sr25519_public_keys_version_1 => {
261
6
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
262
            }
263
            HostFunction::ext_crypto_sr25519_generate_version_1 => {
264
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
265
            }
266
            HostFunction::ext_crypto_sr25519_sign_version_1 => {
267
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
268
            }
269
            HostFunction::ext_crypto_sr25519_verify_version_1 => {
270
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
271
            }
272
            HostFunction::ext_crypto_sr25519_verify_version_2 => {
273
10
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
274
            }
275
            HostFunction::ext_crypto_sr25519_batch_verify_version_1 => {
276
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
277
            }
278
            HostFunction::ext_crypto_ecdsa_generate_version_1 => {
279
2
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
280
            }
281
            HostFunction::ext_crypto_ecdsa_sign_version_1 => {
282
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
283
            }
284
            HostFunction::ext_crypto_ecdsa_public_keys_version_1 => {
285
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
286
            }
287
            HostFunction::ext_crypto_ecdsa_verify_version_1 => {
288
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
289
            }
290
            HostFunction::ext_crypto_ecdsa_verify_version_2 => {
291
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
292
            }
293
            HostFunction::ext_crypto_ecdsa_sign_prehashed_version_1 => {
294
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
295
            }
296
            HostFunction::ext_crypto_ecdsa_verify_prehashed_version_1 => {
297
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I32)
298
            }
299
            HostFunction::ext_crypto_ecdsa_batch_verify_version_1 => {
300
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
301
            }
302
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_version_1 => {
303
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
304
            }
305
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_version_2 => {
306
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
307
            }
308
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_compressed_version_1 => {
309
1
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
310
            }
311
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_compressed_version_2 => {
312
9
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
313
            }
314
9
            HostFunction::ext_crypto_start_batch_verify_version_1 => crate::signature!(() => ()),
315
            HostFunction::ext_crypto_finish_batch_verify_version_1 => {
316
9
                crate::signature!(() => vm::ValueType::I32)
317
            }
318
            HostFunction::ext_hashing_keccak_256_version_1 => {
319
9
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
320
            }
321
            HostFunction::ext_hashing_keccak_512_version_1 => {
322
2
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
323
            }
324
            HostFunction::ext_hashing_sha2_256_version_1 => {
325
7
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
326
            }
327
            HostFunction::ext_hashing_blake2_128_version_1 => {
328
10
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
329
            }
330
            HostFunction::ext_hashing_blake2_256_version_1 => {
331
12
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
332
            }
333
            HostFunction::ext_hashing_twox_64_version_1 => {
334
12
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
335
            }
336
            HostFunction::ext_hashing_twox_128_version_1 => {
337
12
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
338
            }
339
            HostFunction::ext_hashing_twox_256_version_1 => {
340
2
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
341
            }
342
            HostFunction::ext_offchain_index_set_version_1 => {
343
6
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
344
            }
345
            HostFunction::ext_offchain_index_clear_version_1 => {
346
0
                crate::signature!((vm::ValueType::I64) => ())
347
            }
348
            HostFunction::ext_offchain_is_validator_version_1 => {
349
6
                crate::signature!(() => vm::ValueType::I32)
350
            }
351
            HostFunction::ext_offchain_submit_transaction_version_1 => {
352
6
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
353
            }
354
            HostFunction::ext_offchain_network_state_version_1 => {
355
6
                crate::signature!(() => vm::ValueType::I64)
356
            }
357
            HostFunction::ext_offchain_timestamp_version_1 => {
358
3
                crate::signature!(() => vm::ValueType::I64)
359
            }
360
            HostFunction::ext_offchain_sleep_until_version_1 => {
361
0
                crate::signature!((vm::ValueType::I64) => ())
362
            }
363
            HostFunction::ext_offchain_random_seed_version_1 => {
364
6
                crate::signature!(() => vm::ValueType::I32)
365
            }
366
            HostFunction::ext_offchain_local_storage_set_version_1 => {
367
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => ())
368
            }
369
            HostFunction::ext_offchain_local_storage_compare_and_set_version_1 => {
370
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
371
            }
372
            HostFunction::ext_offchain_local_storage_get_version_1 => {
373
6
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
374
            }
375
            HostFunction::ext_offchain_local_storage_clear_version_1 => {
376
3
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => ())
377
            }
378
            HostFunction::ext_offchain_http_request_start_version_1 => {
379
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
380
            }
381
            HostFunction::ext_offchain_http_request_add_header_version_1 => {
382
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
383
            }
384
            HostFunction::ext_offchain_http_request_write_body_version_1 => {
385
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
386
            }
387
            HostFunction::ext_offchain_http_response_wait_version_1 => {
388
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
389
            }
390
            HostFunction::ext_offchain_http_response_headers_version_1 => {
391
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
392
            }
393
            HostFunction::ext_offchain_http_response_read_body_version_1 => {
394
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
395
            }
396
            HostFunction::ext_trie_blake2_256_root_version_1 => {
397
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
398
            }
399
            HostFunction::ext_trie_blake2_256_root_version_2 => {
400
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
401
            }
402
            HostFunction::ext_trie_blake2_256_ordered_root_version_1 => {
403
1
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
404
            }
405
            HostFunction::ext_trie_blake2_256_ordered_root_version_2 => {
406
9
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
407
            }
408
            HostFunction::ext_trie_keccak_256_root_version_1 => {
409
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
410
            }
411
            HostFunction::ext_trie_keccak_256_root_version_2 => {
412
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
413
            }
414
            HostFunction::ext_trie_keccak_256_ordered_root_version_1 => {
415
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
416
            }
417
            HostFunction::ext_trie_keccak_256_ordered_root_version_2 => {
418
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
419
            }
420
            HostFunction::ext_trie_blake2_256_verify_proof_version_1 => {
421
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
422
            }
423
            HostFunction::ext_trie_blake2_256_verify_proof_version_2 => {
424
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
425
            }
426
            HostFunction::ext_trie_keccak_256_verify_proof_version_1 => {
427
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
428
            }
429
            HostFunction::ext_trie_keccak_256_verify_proof_version_2 => {
430
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
431
            }
432
            HostFunction::ext_misc_print_num_version_1 => {
433
4
                crate::signature!((vm::ValueType::I64) => ())
434
            }
435
            HostFunction::ext_misc_print_utf8_version_1 => {
436
10
                crate::signature!((vm::ValueType::I64) => ())
437
            }
438
            HostFunction::ext_misc_print_hex_version_1 => {
439
10
                crate::signature!((vm::ValueType::I64) => ())
440
            }
441
            HostFunction::ext_misc_runtime_version_version_1 => {
442
10
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
443
            }
444
            HostFunction::ext_allocator_malloc_version_1 => {
445
14
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I32)
446
            }
447
            HostFunction::ext_allocator_free_version_1 => {
448
10
                crate::signature!((vm::ValueType::I32) => ())
449
            }
450
            HostFunction::ext_logging_log_version_1 => {
451
10
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => ())
452
            }
453
            HostFunction::ext_logging_max_level_version_1 => {
454
9
                crate::signature!(() => vm::ValueType::I32)
455
            }
456
            HostFunction::ext_panic_handler_abort_on_panic_version_1 => {
457
0
                crate::signature!((vm::ValueType::I64) => ())
458
            }
459
        }
460
446
    }
_RNvMNtNtNtCseuYC0Zibziv_7smoldot8executor4host9functionsNtB2_12HostFunction9signature
Line
Count
Source
164
2.49k
    pub fn signature(&self) -> vm::Signature {
165
2.49k
        match *self {
166
            HostFunction::ext_storage_set_version_1 => {
167
86
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
168
            }
169
            HostFunction::ext_storage_get_version_1 => {
170
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
171
            }
172
            HostFunction::ext_storage_read_version_1 => {
173
86
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
174
            }
175
            HostFunction::ext_storage_clear_version_1 => {
176
86
                crate::signature!((vm::ValueType::I64) => ())
177
            }
178
            HostFunction::ext_storage_exists_version_1 => {
179
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
180
            }
181
            HostFunction::ext_storage_clear_prefix_version_1 => {
182
0
                crate::signature!((vm::ValueType::I64) => ())
183
            }
184
            HostFunction::ext_storage_clear_prefix_version_2 => {
185
86
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
186
            }
187
86
            HostFunction::ext_storage_root_version_1 => crate::signature!(() => vm::ValueType::I64),
188
            HostFunction::ext_storage_root_version_2 => {
189
0
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
190
            }
191
            HostFunction::ext_storage_changes_root_version_1 => {
192
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
193
            }
194
            HostFunction::ext_storage_next_key_version_1 => {
195
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
196
            }
197
            HostFunction::ext_storage_append_version_1 => {
198
86
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
199
            }
200
0
            HostFunction::ext_storage_start_transaction_version_1 => crate::signature!(() => ()),
201
0
            HostFunction::ext_storage_rollback_transaction_version_1 => crate::signature!(() => ()),
202
0
            HostFunction::ext_storage_commit_transaction_version_1 => crate::signature!(() => ()),
203
            HostFunction::ext_storage_proof_size_storage_proof_size_version_1 => {
204
0
                crate::signature!(() => vm::ValueType::I64)
205
            }
206
            HostFunction::ext_default_child_storage_get_version_1 => {
207
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
208
            }
209
            HostFunction::ext_default_child_storage_read_version_1 => {
210
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
211
            }
212
            HostFunction::ext_default_child_storage_storage_kill_version_1 => {
213
0
                crate::signature!((vm::ValueType::I64) => ())
214
            }
215
            HostFunction::ext_default_child_storage_storage_kill_version_2 => {
216
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
217
            }
218
            HostFunction::ext_default_child_storage_storage_kill_version_3 => {
219
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
220
            }
221
            HostFunction::ext_default_child_storage_clear_prefix_version_1 => {
222
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
223
            }
224
            HostFunction::ext_default_child_storage_clear_prefix_version_2 => {
225
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
226
            }
227
            HostFunction::ext_default_child_storage_set_version_1 => {
228
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => ())
229
            }
230
            HostFunction::ext_default_child_storage_clear_version_1 => {
231
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
232
            }
233
            HostFunction::ext_default_child_storage_exists_version_1 => {
234
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
235
            }
236
            HostFunction::ext_default_child_storage_next_key_version_1 => {
237
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
238
            }
239
            HostFunction::ext_default_child_storage_root_version_1 => {
240
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
241
            }
242
            HostFunction::ext_default_child_storage_root_version_2 => {
243
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I64)
244
            }
245
            HostFunction::ext_crypto_ed25519_public_keys_version_1 => {
246
0
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
247
            }
248
            HostFunction::ext_crypto_ed25519_generate_version_1 => {
249
86
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
250
            }
251
            HostFunction::ext_crypto_ed25519_sign_version_1 => {
252
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
253
            }
254
            HostFunction::ext_crypto_ed25519_verify_version_1 => {
255
86
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
256
            }
257
            HostFunction::ext_crypto_ed25519_batch_verify_version_1 => {
258
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
259
            }
260
            HostFunction::ext_crypto_sr25519_public_keys_version_1 => {
261
0
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I64)
262
            }
263
            HostFunction::ext_crypto_sr25519_generate_version_1 => {
264
86
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
265
            }
266
            HostFunction::ext_crypto_sr25519_sign_version_1 => {
267
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
268
            }
269
            HostFunction::ext_crypto_sr25519_verify_version_1 => {
270
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
271
            }
272
            HostFunction::ext_crypto_sr25519_verify_version_2 => {
273
86
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
274
            }
275
            HostFunction::ext_crypto_sr25519_batch_verify_version_1 => {
276
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
277
            }
278
            HostFunction::ext_crypto_ecdsa_generate_version_1 => {
279
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I32)
280
            }
281
            HostFunction::ext_crypto_ecdsa_sign_version_1 => {
282
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
283
            }
284
            HostFunction::ext_crypto_ecdsa_public_keys_version_1 => {
285
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
286
            }
287
            HostFunction::ext_crypto_ecdsa_verify_version_1 => {
288
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
289
            }
290
            HostFunction::ext_crypto_ecdsa_verify_version_2 => {
291
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
292
            }
293
            HostFunction::ext_crypto_ecdsa_sign_prehashed_version_1 => {
294
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
295
            }
296
            HostFunction::ext_crypto_ecdsa_verify_prehashed_version_1 => {
297
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I32)
298
            }
299
            HostFunction::ext_crypto_ecdsa_batch_verify_version_1 => {
300
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
301
            }
302
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_version_1 => {
303
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
304
            }
305
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_version_2 => {
306
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
307
            }
308
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_compressed_version_1 => {
309
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
310
            }
311
            HostFunction::ext_crypto_secp256k1_ecdsa_recover_compressed_version_2 => {
312
86
                crate::signature!((vm::ValueType::I32, vm::ValueType::I32) => vm::ValueType::I64)
313
            }
314
86
            HostFunction::ext_crypto_start_batch_verify_version_1 => crate::signature!(() => ()),
315
            HostFunction::ext_crypto_finish_batch_verify_version_1 => {
316
86
                crate::signature!(() => vm::ValueType::I32)
317
            }
318
            HostFunction::ext_hashing_keccak_256_version_1 => {
319
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
320
            }
321
            HostFunction::ext_hashing_keccak_512_version_1 => {
322
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
323
            }
324
            HostFunction::ext_hashing_sha2_256_version_1 => {
325
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
326
            }
327
            HostFunction::ext_hashing_blake2_128_version_1 => {
328
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
329
            }
330
            HostFunction::ext_hashing_blake2_256_version_1 => {
331
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
332
            }
333
            HostFunction::ext_hashing_twox_64_version_1 => {
334
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
335
            }
336
            HostFunction::ext_hashing_twox_128_version_1 => {
337
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
338
            }
339
            HostFunction::ext_hashing_twox_256_version_1 => {
340
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
341
            }
342
            HostFunction::ext_offchain_index_set_version_1 => {
343
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => ())
344
            }
345
            HostFunction::ext_offchain_index_clear_version_1 => {
346
0
                crate::signature!((vm::ValueType::I64) => ())
347
            }
348
            HostFunction::ext_offchain_is_validator_version_1 => {
349
0
                crate::signature!(() => vm::ValueType::I32)
350
            }
351
            HostFunction::ext_offchain_submit_transaction_version_1 => {
352
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
353
            }
354
            HostFunction::ext_offchain_network_state_version_1 => {
355
0
                crate::signature!(() => vm::ValueType::I64)
356
            }
357
            HostFunction::ext_offchain_timestamp_version_1 => {
358
0
                crate::signature!(() => vm::ValueType::I64)
359
            }
360
            HostFunction::ext_offchain_sleep_until_version_1 => {
361
0
                crate::signature!((vm::ValueType::I64) => ())
362
            }
363
            HostFunction::ext_offchain_random_seed_version_1 => {
364
0
                crate::signature!(() => vm::ValueType::I32)
365
            }
366
            HostFunction::ext_offchain_local_storage_set_version_1 => {
367
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => ())
368
            }
369
            HostFunction::ext_offchain_local_storage_compare_and_set_version_1 => {
370
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
371
            }
372
            HostFunction::ext_offchain_local_storage_get_version_1 => {
373
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => vm::ValueType::I64)
374
            }
375
            HostFunction::ext_offchain_local_storage_clear_version_1 => {
376
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64) => ())
377
            }
378
            HostFunction::ext_offchain_http_request_start_version_1 => {
379
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
380
            }
381
            HostFunction::ext_offchain_http_request_add_header_version_1 => {
382
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
383
            }
384
            HostFunction::ext_offchain_http_request_write_body_version_1 => {
385
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
386
            }
387
            HostFunction::ext_offchain_http_response_wait_version_1 => {
388
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
389
            }
390
            HostFunction::ext_offchain_http_response_headers_version_1 => {
391
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
392
            }
393
            HostFunction::ext_offchain_http_response_read_body_version_1 => {
394
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I64)
395
            }
396
            HostFunction::ext_trie_blake2_256_root_version_1 => {
397
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
398
            }
399
            HostFunction::ext_trie_blake2_256_root_version_2 => {
400
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
401
            }
402
            HostFunction::ext_trie_blake2_256_ordered_root_version_1 => {
403
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
404
            }
405
            HostFunction::ext_trie_blake2_256_ordered_root_version_2 => {
406
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
407
            }
408
            HostFunction::ext_trie_keccak_256_root_version_1 => {
409
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
410
            }
411
            HostFunction::ext_trie_keccak_256_root_version_2 => {
412
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
413
            }
414
            HostFunction::ext_trie_keccak_256_ordered_root_version_1 => {
415
0
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I32)
416
            }
417
            HostFunction::ext_trie_keccak_256_ordered_root_version_2 => {
418
0
                crate::signature!((vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
419
            }
420
            HostFunction::ext_trie_blake2_256_verify_proof_version_1 => {
421
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
422
            }
423
            HostFunction::ext_trie_blake2_256_verify_proof_version_2 => {
424
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
425
            }
426
            HostFunction::ext_trie_keccak_256_verify_proof_version_1 => {
427
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64) => vm::ValueType::I32)
428
            }
429
            HostFunction::ext_trie_keccak_256_verify_proof_version_2 => {
430
0
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I64, vm::ValueType::I32) => vm::ValueType::I32)
431
            }
432
            HostFunction::ext_misc_print_num_version_1 => {
433
0
                crate::signature!((vm::ValueType::I64) => ())
434
            }
435
            HostFunction::ext_misc_print_utf8_version_1 => {
436
86
                crate::signature!((vm::ValueType::I64) => ())
437
            }
438
            HostFunction::ext_misc_print_hex_version_1 => {
439
86
                crate::signature!((vm::ValueType::I64) => ())
440
            }
441
            HostFunction::ext_misc_runtime_version_version_1 => {
442
86
                crate::signature!((vm::ValueType::I64) => vm::ValueType::I64)
443
            }
444
            HostFunction::ext_allocator_malloc_version_1 => {
445
86
                crate::signature!((vm::ValueType::I32) => vm::ValueType::I32)
446
            }
447
            HostFunction::ext_allocator_free_version_1 => {
448
86
                crate::signature!((vm::ValueType::I32) => ())
449
            }
450
            HostFunction::ext_logging_log_version_1 => {
451
86
                crate::signature!((vm::ValueType::I32, vm::ValueType::I64, vm::ValueType::I64) => ())
452
            }
453
            HostFunction::ext_logging_max_level_version_1 => {
454
86
                crate::signature!(() => vm::ValueType::I32)
455
            }
456
            HostFunction::ext_panic_handler_abort_on_panic_version_1 => {
457
0
                crate::signature!((vm::ValueType::I64) => ())
458
            }
459
        }
460
2.49k
    }
461
}