Refactor the TypeTables type (#3971)

* Remove duplicate `TypeTables` type

This was once needed historically but it is no longer needed.

* Make the internals of `TypeTables` private

Instead of reaching internally for the `wasm_signatures` map an `Index`
implementation now exists to indirect accesses through the type of the
index being accessed. For the component model this table of types will
grow a number of other tables and this'll assist in consuming sites not
having to worry so much about which map they're reaching into.
This commit is contained in:
Alex Crichton
2022-03-30 13:51:25 -05:00
committed by GitHub
parent 5d8dd648d7
commit d1d10dc8da
12 changed files with 43 additions and 42 deletions

View File

@@ -256,7 +256,7 @@ impl wasmtime_environ::Compiler for Compiler {
let compiled_trampolines = translation
.exported_signatures
.iter()
.map(|i| self.host_to_wasm_trampoline(&types.wasm_signatures[*i]))
.map(|i| self.host_to_wasm_trampoline(&types[*i]))
.collect::<Result<Vec<_>, _>>()?;
let mut func_starts = Vec::with_capacity(funcs.len());

View File

@@ -1486,7 +1486,7 @@ impl<'module_environment> cranelift_wasm::FuncEnvironment for FuncEnvironment<'m
index: TypeIndex,
) -> WasmResult<ir::SigRef> {
let index = self.module.types[index].unwrap_function();
let sig = crate::indirect_signature(self.isa, &self.types.wasm_signatures[index]);
let sig = crate::indirect_signature(self.isa, &self.types[index]);
Ok(func.import_signature(sig))
}

View File

@@ -226,7 +226,7 @@ fn func_signature(
_ => wasmtime_call_conv(isa),
};
let mut sig = blank_sig(isa, call_conv);
push_types(isa, &mut sig, &types.wasm_signatures[func.signature]);
push_types(isa, &mut sig, &types[func.signature]);
return sig;
}