MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / callee_sig

Method callee_sig

winch/codegen/src/codegen/env.rs:333–365  ·  view source on GitHub ↗
(&'b mut self, callee: &'b Callee)

Source from the content-addressed store, hash-verified

331 }
332
333 pub(crate) fn callee_sig<'b, A>(&'b mut self, callee: &'b Callee) -> Result<&'b ABISig>
334 where
335 A: ABI,
336 {
337 match callee {
338 Callee::Local(idx) | Callee::Import(idx) => {
339 if self.resolved_callees.contains_key(idx) {
340 Ok(self.resolved_callees.get(idx).unwrap())
341 } else {
342 let types = self.translation.get_types();
343 let types = types.as_ref();
344 let ty = types[types.core_function_at(idx.as_u32())].unwrap_func();
345 let converter = TypeConverter::new(self.translation, self.types);
346 let ty = converter.convert_func_type(&ty)?;
347 let sig = wasm_sig::<A>(&ty)?;
348 self.resolved_callees.insert(*idx, sig);
349 Ok(self.resolved_callees.get(idx).unwrap())
350 }
351 }
352 Callee::FuncRef(idx) => {
353 if self.resolved_sigs.contains_key(idx) {
354 Ok(self.resolved_sigs.get(idx).unwrap())
355 } else {
356 let sig_index = self.translation.module.types[*idx].unwrap_module_type_index();
357 let ty = self.types[sig_index].unwrap_func();
358 let sig = wasm_sig::<A>(ty)?;
359 self.resolved_sigs.insert(*idx, sig);
360 Ok(self.resolved_sigs.get(idx).unwrap())
361 }
362 }
363 Callee::Builtin(b) | Callee::BuiltinWithDifferentVmctx(b, _) => Ok(b.sig()),
364 }
365 }
366
367 /// Creates a name to reference the `builtin` provided.
368 pub fn name_builtin(&mut self, builtin: BuiltinFunctionIndex) -> UserExternalNameRef {

Callers

nothing calls this directly

Calls 13

OkFunction · 0.85
get_typesMethod · 0.80
convert_func_typeMethod · 0.80
newFunction · 0.50
contains_keyMethod · 0.45
unwrapMethod · 0.45
getMethod · 0.45
as_refMethod · 0.45
unwrap_funcMethod · 0.45
as_u32Method · 0.45
insertMethod · 0.45

Tested by

no test coverage detected