File: test_webassembly_compile_worker.js

package info (click to toggle)
firefox 143.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,617,328 kB
  • sloc: cpp: 7,478,492; javascript: 6,417,157; ansic: 3,720,058; python: 1,396,372; xml: 627,523; asm: 438,677; java: 186,156; sh: 63,477; makefile: 19,171; objc: 13,059; perl: 12,983; yacc: 4,583; cs: 3,846; pascal: 3,405; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (55 lines) | stat: -rw-r--r-- 1,672 bytes parent folder | download | duplicates (28)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const sampleURL = "test_webassembly_compile_sample.wasm";
const sampleExportName = "run";
const sampleResult = 1275;

/* eslint-disable no-throw-literal */

function checkSampleModule(m) {
  if (!(m instanceof WebAssembly.Module)) {
    throw "not a module";
  }
  var i = new WebAssembly.Instance(m);
  if (!(i instanceof WebAssembly.Instance)) {
    throw "not an instance";
  }
  if (i.exports[sampleExportName]() !== sampleResult) {
    throw "wrong result";
  }
}

function checkSampleInstance(i) {
  if (!(i instanceof WebAssembly.Instance)) {
    throw "not an instance";
  }
  if (i.exports[sampleExportName]() !== sampleResult) {
    throw "wrong result";
  }
}

const initObj = { headers: { "Content-Type": "application/wasm" } };

onmessage = e => {
  WebAssembly.compile(e.data)
    .then(m => checkSampleModule(m))
    .then(() => WebAssembly.instantiate(e.data))
    .then(({ module, instance }) => {
      checkSampleModule(module);
      checkSampleInstance(instance);
    })
    .then(() => WebAssembly.compileStreaming(new Response(e.data, initObj)))
    .then(m => checkSampleModule(m))
    .then(() => WebAssembly.instantiateStreaming(new Response(e.data, initObj)))
    .then(({ module, instance }) => {
      checkSampleModule(module);
      checkSampleInstance(instance);
    })
    .then(() => WebAssembly.compileStreaming(fetch(sampleURL)))
    .then(m => checkSampleModule(m))
    .then(() => WebAssembly.instantiateStreaming(fetch(sampleURL)))
    .then(({ module, instance }) => {
      checkSampleModule(module);
      checkSampleInstance(instance);
    })
    .then(() => postMessage("ok"))
    .catch(err => postMessage("fail: " + err));
};