// META: global=window,dedicatedworker,jsshell // META: script=/wasm/jsapi/wasm-module-builder.js function getExports() { const builder = new WasmModuleBuilder(); builder .addFunction("fn", kSig_v_d) .addBody([]) .exportFunc(); builder.setTableBounds(1); builder.addExportOfKind("table", kExternalTable, 0); builder.addGlobal(kWasmI32, false).exportAs("global"); builder.addMemory(4, 8, true); const buffer = builder.toBuffer(); const module = new WebAssembly.Module(buffer); const instance = new WebAssembly.Instance(module); return instance.exports; } test(() => { const exports = getExports(); const builder = new WasmModuleBuilder(); const functionIndex = builder.addImport("module", "imported", kSig_v_d); builder.addExport("exportedFunction", functionIndex); const globalIndex = builder.addImportedGlobal("module", "global", kWasmI32); builder.addExportOfKind("exportedGlobal", kExternalGlobal, globalIndex); builder.addImportedMemory("module", "memory", 4); builder.exportMemoryAs("exportedMemory"); const tableIndex = builder.addImportedTable("module", "table", 1); builder.addExportOfKind("exportedTable", kExternalTable, tableIndex); const buffer = builder.toBuffer(); const module = new WebAssembly.Module(buffer); const instance = new WebAssembly.Instance(module, { "module": { "imported": exports.fn, "global": exports.global, "memory": exports.memory, "table": exports.table, } }); assert_equals(instance.exports.exportedFunction, exports.fn); assert_equals(instance.exports.exportedGlobal, exports.global); assert_equals(instance.exports.exportedMemory, exports.memory); assert_equals(instance.exports.exportedTable, exports.table); });