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

Method declare_function

cranelift/object/src/backend.rs:315–348  ·  view source on GitHub ↗
(
        &mut self,
        name: &str,
        linkage: Linkage,
        signature: &ir::Signature,
    )

Source from the content-addressed store, hash-verified

313 }
314
315 fn declare_function(
316 &mut self,
317 name: &str,
318 linkage: Linkage,
319 signature: &ir::Signature,
320 ) -> ModuleResult<FuncId> {
321 validate_symbol(name)?;
322
323 let (id, linkage) = self
324 .declarations
325 .declare_function(name, linkage, signature)?;
326
327 let (scope, weak) = translate_linkage(linkage);
328
329 if let Some((function, _defined)) = self.functions[id] {
330 let symbol = self.object.symbol_mut(function);
331 symbol.scope = scope;
332 symbol.weak = weak;
333 } else {
334 let symbol_id = self.object.add_symbol(Symbol {
335 name: name.as_bytes().to_vec(),
336 value: 0,
337 size: 0,
338 kind: SymbolKind::Text,
339 scope,
340 weak,
341 section: SymbolSection::Undefined,
342 flags: SymbolFlags::None,
343 });
344 self.functions[id] = Some((symbol_id, false));
345 }
346
347 Ok(id)
348 }
349
350 fn declare_anonymous_function(&mut self, signature: &ir::Signature) -> ModuleResult<FuncId> {
351 let id = self.declarations.declare_anonymous_function(signature)?;

Calls 5

validate_symbolFunction · 0.85
translate_linkageFunction · 0.85
OkFunction · 0.85
as_bytesMethod · 0.80
to_vecMethod · 0.45