tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

constructor-caching.any.js (1775B)


      1 // META: global=window,dedicatedworker,jsshell,shadowrealm
      2 // META: script=/wasm/jsapi/wasm-module-builder.js
      3 
      4 function 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 
     22 test(() => {
     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 });