whamm 0.1.0

A framework for 'Wasm Application Monitoring and Manipulation'
Documentation
#![allow(clippy::too_many_arguments)]

use crate::api::instrument::LibraryLinkStrategy;
use crate::common::error::ErrorGen;
use crate::emitter::memory_allocator::MemoryAllocator;
use crate::generator::ast::Script;
use crate::lang_features::libraries::core::utils::UtilsPackage;
use crate::lang_features::libraries::core::LibPackage;
use crate::verifier::types::SymbolTable;
use wirm::ir::id::FunctionID;
use wirm::Module;

pub fn link_core_lib(
    method: LibraryLinkStrategy,
    ast: &[Script],
    app_wasm: &mut Module,
    core_lib: &[u8],
    mem_allocator: &mut MemoryAllocator,
    utils: &mut UtilsPackage,
    packages: &mut [&mut dyn LibPackage],
    _: &mut SymbolTable,
    err: &mut ErrorGen,
) -> Vec<FunctionID> {
    match method {
        LibraryLinkStrategy::Imported => {
            crate::lang_features::libraries::linking::import_lib::link_core_lib(
                ast,
                app_wasm,
                core_lib,
                mem_allocator,
                utils,
                packages,
                err,
            )
        }
        LibraryLinkStrategy::Merged => {
            unimplemented!("Have not implemented support for merging core library code.");
        }
    }
}