-
Notifications
You must be signed in to change notification settings - Fork 0
/
wasm-simple.js
32 lines (28 loc) · 782 Bytes
/
wasm-simple.js
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
let bfCode = null;
const output = (c) => {
postMessage(c)
};
const memory = new WebAssembly.Memory({ initial: 1 });
let compute = null;
const startUp = new Promise(async (resolve) => {
const importObj = {
js: {
memory: memory,
output: output
}
};
const wasmBinary = await fetch('./wasm-simple.wasm');
const module = await WebAssembly.instantiate(await wasmBinary.arrayBuffer(), importObj);
compute = module.instance.exports.compute;
resolve();
});
onmessage = async (e) => {
bfCode = e.data;
await startUp;
const bytes = new Uint8Array(memory.buffer, 0, bfCode.length);
for(let i = 0; i < bfCode.length; i++) {
bytes[i] = bfCode.charCodeAt(i);
}
compute();
output(null);
};