Inject default imported function implementation
Just throws exception
This commit is contained in:
parent
faee016aca
commit
d487abb3b3
File diff suppressed because one or more lines are too long
|
@ -53,6 +53,7 @@ export const WasmRunner = (rawOptions: Options | false, SwiftRuntime: SwiftRunti
|
|||
|
||||
const createWasmImportObject = (
|
||||
extraWasmImports: WebAssembly.Imports,
|
||||
module: WebAssembly.Module,
|
||||
): WebAssembly.Imports => {
|
||||
const importObject: WebAssembly.Imports = {
|
||||
wasi_snapshot_preview1: wasi.wasiImport,
|
||||
|
@ -64,7 +65,6 @@ export const WasmRunner = (rawOptions: Options | false, SwiftRuntime: SwiftRunti
|
|||
|
||||
if (extraWasmImports) {
|
||||
for (const moduleName in extraWasmImports) {
|
||||
// importObject[moduleName] = extraWasmImports[moduleName];
|
||||
if (!importObject[moduleName]) {
|
||||
importObject[moduleName] = {};
|
||||
}
|
||||
|
@ -74,6 +74,17 @@ export const WasmRunner = (rawOptions: Options | false, SwiftRuntime: SwiftRunti
|
|||
}
|
||||
}
|
||||
|
||||
for (const importEntry of WebAssembly.Module.imports(module)) {
|
||||
if (!importObject[importEntry.module]) {
|
||||
importObject[importEntry.module] = {};
|
||||
}
|
||||
if (importEntry.kind == "function" && !importObject[importEntry.module][importEntry.name]) {
|
||||
importObject[importEntry.module][importEntry.name] = () => {
|
||||
throw new Error(`Imported function ${importEntry.module}.${importEntry.name} not implemented`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return importObject;
|
||||
};
|
||||
|
||||
|
@ -88,7 +99,7 @@ export const WasmRunner = (rawOptions: Options | false, SwiftRuntime: SwiftRunti
|
|||
},
|
||||
};
|
||||
const module = await WebAssembly.compile(wasmBytes);
|
||||
const importObject = createWasmImportObject(extraWasmImports);
|
||||
const importObject = createWasmImportObject(extraWasmImports, module);
|
||||
const instance = await WebAssembly.instantiate(module, importObject);
|
||||
|
||||
if (swift && instance.exports.swjs_library_version) {
|
||||
|
|
Loading…
Reference in New Issue