wasmtime/runtime/trampoline/
table.rs

1use crate::prelude::*;
2use crate::store::{InstanceId, StoreOpaque};
3use crate::trampoline::create_handle;
4use crate::TableType;
5use wasmtime_environ::{EntityIndex, Module, TypeTrace};
6
7pub fn create_table(store: &mut StoreOpaque, table: &TableType) -> Result<InstanceId> {
8    let mut module = Module::new();
9
10    let wasmtime_table = *table.wasmtime_table();
11
12    debug_assert!(
13        wasmtime_table.ref_type.is_canonicalized_for_runtime_usage(),
14        "should be canonicalized for runtime usage: {:?}",
15        wasmtime_table.ref_type
16    );
17
18    let table_id = module.tables.push(wasmtime_table);
19
20    // TODO: can this `exports.insert` get removed?
21    module
22        .exports
23        .insert(String::new(), EntityIndex::Table(table_id));
24
25    create_handle(module, store, Box::new(()), &[], None)
26}