decoder-pro-mt-worker.worker.js
3.91 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"use strict";var Date=(function(){try{var D=self.Date;var O=D.now(),F=1704067200000;if(O>F){var d=O-F;var M=function(a,b,c,e,f,g,h){if(arguments.length===0)return new D(D.now()-d);if(arguments.length===1)return new D(a);return new D(a,b,c||1,e||0,f||0,g||0,h||0)};M.now=function(){return D.now()-d};M.parse=D.parse;M.UTC=D.UTC;M.prototype=D.prototype;return M}return D}catch(e){return self.Date}})();
var Module = {};
var ENVIRONMENT_IS_NODE =
typeof process == "object" &&
typeof process.versions == "object" &&
typeof process.versions.node == "string";
if (ENVIRONMENT_IS_NODE) {
var nodeWorkerThreads = require("worker_threads");
var parentPort = nodeWorkerThreads.parentPort;
parentPort.on("message", data => onmessage({ data: data }));
var fs = require("fs");
Object.assign(global, {
self: global,
require: require,
Module: Module,
location: { href: __filename },
Worker: nodeWorkerThreads.Worker,
importScripts: f =>
(0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f),
postMessage: msg => parentPort.postMessage(msg),
performance: global.performance || { now: Date.now }
});
}
var initializedJS = false;
function threadPrintErr() {
var text = Array.prototype.slice.call(arguments).join(" ");
if (ENVIRONMENT_IS_NODE) {
fs.writeSync(2, text + "\n");
return;
}
console.error(text);
}
function threadAlert() {
var text = Array.prototype.slice.call(arguments).join(" ");
postMessage({
cmd: "alert",
text: text,
threadId: Module["_pthread_self"]()
});
}
var err = threadPrintErr;
self.alert = threadAlert;
Module["instantiateWasm"] = (info, receiveInstance) => {
var module = Module["wasmModule"];
Module["wasmModule"] = null;
var instance = new WebAssembly.Instance(module, info);
return receiveInstance(instance);
};
self.onunhandledrejection = e => {
throw e.reason || e;
};
function handleMessage(e) {
try {
if (e.data.cmd === "load") {
let messageQueue = [];
self.onmessage = e => messageQueue.push(e);
self.startWorker = instance => {
Module = instance;
postMessage({ cmd: "loaded" });
for (let msg of messageQueue) {
handleMessage(msg);
}
self.onmessage = handleMessage;
};
Module["wasmModule"] = e.data.wasmModule;
for (const handler of e.data.handlers) {
Module[handler] = (...args) => {
postMessage({ cmd: "callHandler", handler: handler, args: args });
};
}
Module["wasmMemory"] = e.data.wasmMemory;
Module["buffer"] = Module["wasmMemory"].buffer;
Module["ENVIRONMENT_IS_PTHREAD"] = true;
(e.data.urlOrBlob
? import(e.data.urlOrBlob)
: import("./decoder-pro-mt-worker.js")
).then(exports => exports.default(Module));
} else if (e.data.cmd === "run") {
Module["__emscripten_thread_init"](e.data.pthread_ptr, 0, 0, 1);
Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);
Module["establishStackSpace"]();
Module["PThread"].receiveObjectTransfer(e.data);
Module["PThread"].threadInitTLS();
if (!initializedJS) {
Module["__embind_initialize_bindings"]();
initializedJS = true;
}
try {
Module["invokeEntryPoint"](e.data.start_routine, e.data.arg);
} catch (ex) {
if (ex != "unwind") {
throw ex;
}
}
} else if (e.data.cmd === "cancel") {
if (Module["_pthread_self"]()) {
Module["__emscripten_thread_exit"](-1);
}
} else if (e.data.target === "setimmediate") {
} else if (e.data.cmd === "checkMailbox") {
if (initializedJS) {
Module["checkMailbox"]();
}
} else if (e.data.cmd) {
err(`worker.js received unknown command ${e.data.cmd}`);
err(e.data);
}
} catch (ex) {
if (Module["__emscripten_thread_crashed"]) {
Module["__emscripten_thread_crashed"]();
}
throw ex;
}
}
self.onmessage = handleMessage;