1// META: global=window,dedicatedworker,jsshell 2// META: script=/wasm/jsapi/wasm-module-builder.js 3 4function getExports() { 5 const builder = new WasmModuleBuilder(); 6 builder 7 .addFunction("fn", kSig_v_d) 8 .addBody([]) 9 .exportFunc(); 10 11 builder.setTableBounds(1); 12 builder.addExportOfKind("table", kExternalTable, 0); 13 builder.addGlobal(kWasmI32, false).exportAs("global"); 14 builder.addMemory(4, 8, true); 15 16 const buffer = builder.toBuffer(); 17 const module = new WebAssembly.Module(buffer); 18 const instance = new WebAssembly.Instance(module); 19 return instance.exports; 20} 21 22test(() => { 23 const exports = getExports(); 24 25 const builder = new WasmModuleBuilder(); 26 const functionIndex = builder.addImport("module", "imported", kSig_v_d); 27 builder.addExport("exportedFunction", functionIndex); 28 29 const globalIndex = builder.addImportedGlobal("module", "global", kWasmI32); 30 builder.addExportOfKind("exportedGlobal", kExternalGlobal, globalIndex); 31 32 builder.addImportedMemory("module", "memory", 4); 33 builder.exportMemoryAs("exportedMemory"); 34 35 const tableIndex = builder.addImportedTable("module", "table", 1); 36 builder.addExportOfKind("exportedTable", kExternalTable, tableIndex); 37 38 const buffer = builder.toBuffer(); 39 40 const module = new WebAssembly.Module(buffer); 41 const instance = new WebAssembly.Instance(module, { 42 "module": { 43 "imported": exports.fn, 44 "global": exports.global, 45 "memory": exports.memory, 46 "table": exports.table, 47 } 48 }); 49 50 assert_equals(instance.exports.exportedFunction, exports.fn); 51 assert_equals(instance.exports.exportedGlobal, exports.global); 52 assert_equals(instance.exports.exportedMemory, exports.memory); 53 assert_equals(instance.exports.exportedTable, exports.table); 54}); 55