forked from LeenkxTeam/Kmake
55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
|
|
// 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);
|
||
|
|
});
|