Skip to content

Commit

Permalink
Handle precompiled modules in initSync on target web
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaslihotzki committed Aug 2, 2022
1 parent 6daa3d1 commit fb1fda9
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions crates/cli-support/src/js/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -614,16 +614,19 @@ impl<'a> Context<'a> {
} else {
declare_or_export = "export";

sync_init_function.push_str(&format!("\
sync_init_function.push_str(&format!(
"\
{declare_or_export} type SyncInitInput = BufferSource | WebAssembly.Module;\n\
/**\n\
* Synchronously compiles the given `bytes` and instantiates the WebAssembly module.\n\
* Uses a given `module` directly or compiles it from a BufferSource and then\n\
* instantiates the WebAssembly module.\n\
*\n\
* @param {{BufferSource}} bytes\n\
* @param {{SyncInitInput}} module\n\
{memory_doc}\
*\n\
* @returns {{InitOutput}}\n\
*/\n\
export function initSync(bytes: BufferSource{memory_param}): InitOutput;\n\n\
export function initSync(module: SyncInitInput{memory_param}): InitOutput;\n\n\
",
memory_doc = memory_doc,
memory_param = memory_param
Expand Down Expand Up @@ -836,12 +839,15 @@ impl<'a> Context<'a> {
return wasm;
}}
function initSync(bytes{init_memory_arg}) {{
function initSync(module{init_memory_arg}) {{
const imports = getImports();
initMemory(imports{init_memory_arg});
const module = new WebAssembly.Module(bytes);
if (!(module instanceof WebAssembly.Module)) {{
module = new WebAssembly.Module(module);
}}
const instance = new WebAssembly.Instance(module, imports);
return finalizeInit(instance, module);
Expand Down

0 comments on commit fb1fda9

Please sign in to comment.