blob: 1aa4739b6294d0137ead3097d5dbcec3e3a1f222 [file] [log] [blame]
// 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);
});